--files
can filter the .feature
files to be considered.--ignore
can indicate the .feature
files to be ignored, when a directory is given.@ignore
can be used to mark a Feature
or Variant
to be ignored by the test generator. However, it can still be used by other Features or Variants.@importance
(e.g., @importance( 8 )
) can be used to denote the importance of a Feature. CLI parameters --sel-min-feature
and --sel-max-feature
can then be used to filter the features to be considered by the test generator. Example: concordia --sel-min-feature 7
makes the compiler considers the features with importance value of 7
or above. By default, all the features receive an importance value of 5
. ~
), like this:Given
sentence;When
sentence;Then
sentence.--comb-variant
; and --comb-state
.--comb-variant
:random
: Selects a random Variant that produces the required State. That's the default behavior;first
: Selects the first Variant that produces the required State;fmi
: Selects the first most important Variant (since two Variants can have the same importance value) that produces the required State;all
: Selects all the Variants that produce the required State.--comb-state
:sre
: Single random of each - that is, randomly selects a single, successful test scenario of each selected Variant. That's the default behavior;sow
: Shuffled one-wise - that is, shuffles the successful test scenarios than uses one-wise combination. all
: Selects all the successful test scenarios to combine.RANGE
, LENGTH
, FORMAT
, SET
, REQUIRED
, and COMPUTED
. The group COMPUTED
is not available on purpose, since a user-defined algorithm to produce test data can have bugs on itself. Thus, one should provide expected input and output values in order to check whether the application is able to correctly compute the output value based on the received input value.0
)500
. This value is used for reducing the time to run test scripts, since long strings take time to be entered.--random-max-string-size
. Example: .concordiarc
) by adding the property randomMaxStringSize
. Example:FILLED
and NOT_FILLED
are both applied and considered as valid values;NOT_FILLED
(empty) is considered as an invalid value;SET
are applied;data type
is defined, data type
as double
, since the default data type is string
. Salary
will be tested with the test cases of the group REQUIRED
: FILLED
: a pseudo-random double value is generated;NOT_FILLED
: an empty value will be used.RANGE
are now applicable:LOWEST_VALUE
: the lowest possible double is usedRANDOM_BELOW_MIN_VALUE
: a random double before the minimum value is generatedJUST_BELOW_MIN_VALUE
: a double just below the minimum value is used (e.g., 999.99
)MIN_VALUE
: the minimum value is usedJUST_ABOVE_MIN_VALUE
: a double just above the minimum value is used (e.g., 1000.01
)ZERO_VALUE
: zero (0
) is used1000.00
is the minimum value, the data produced by the tests 1
, 2
, 3
, and 6
of the group VALUE
are considered invalid, while 4
and 5
are not. For these tests considered invalid, the behavior defined in Otherwise
, that is@fail
.RANGE
are now applicable. That is, the following tests will be included:MEDIAN_VALUE
: the median between the minimum and the maximum valuesRANDOM_BETWEEN_MIN_MAX_VALUES
: a pseudo-random double value between the minimum and the maximum valuesJUST_BELOW_MAX_VALUE
: the value just below the maximum valueMAX_VALUE
: the maximum valueJUST_ABOVE_MAX_VALUE
: the value just above the maximum valueRANDOM_ABOVE_MAX_VALUE
: a pseudo-random double above the maximum valueGREATEST_VALUE
: the greatest possible double5
to 7
will produce values considered invalid.Profession
and a table named Professions
from which the values come from:FILLED
NOT_FILLED
FIRST_ELEMENT
RANDOM_ELEMENT
LAST_ELEMENT
NOT_IN_SET
REQUIRED
. Since we declared Profession
as having a required value, the test FILLED
is considered valid but NOT_FILLED
is not. Therefore, it is important to remember declaring required inputs accordingly.SET
. Only the last one, NOT_IN_SET
, will produce a value considered invalid.Salary
rules dynamic and change according to the Profession
.Professions
table:{Profession}
inside the query, makes the rules of Salary
depend on Profession
. Every time a Profession
is selected, the minimum value and the maximum value of Salary
changes according to the columns min_salary
and max_salary
of the table Professions
.