Scenarios with examples - adamralph/xbehave.net GitHub Wiki
xBehave.net allows the passing of example values for the parameters in a scenario method.
This is equivalent to Cucumber's Scenario Outlines and works in a similar manner to xUnit.net's [Theory]
attribute for data driven testing.
E.g.
[Scenario]
[Example(1, 2, 3)]
[Example(2, 3, 5)]
public void Addition(int x, int y, int expectedAnswer, Calculator calculator, int answer)
{
$"Given the number {x}"
.x(() => { });
$"And the number {y}"
.x(() => { });
"And a calculator"
.x(() => calculator = new Calculator());
"When I add the numbers together"
.x(() => answer = calculator.Add(x, y));
$"Then the answer is {answer}"
.x(() => Assert.Equal(expectedAnswer, answer));
}
results in this output:
There are few things to note here:
- Each parameter which does not have a corresponding example value (based purely on number of values/parameters) continues to have its default value passed (
null
for reference types and zero values for value types). - You are not limited to using only the
[Example]
attribute for providing values. Any attribute which inherits from the xUnit.net'sDataAttribute
will also work, including xUnit.net's own[ClassData]
and[MemberData]
. - Each
[Example]
effectively generates a new scenario.