Scenario Lifecycle
Specify uses BDDfy's Reflective API to scan Scenario classes for methods. By default, BDDfy recognises the standard BDD methods, as well as Setup and TearDown. You can read more about them here and you can always customize them if you have your own preferences by creating a new BDDfy MethodNameStepScanner.
The methods are found based on these method name conventions - and run in this order.
- Ending with
Contextis considered as a setup method.Not reported. Setupis considered as a setup method.Not reported.- Starting with
Givenis considered as a setup method. - Starting with
AndGivenis considered as a setup method that runs after Given steps. - Starting with
Whenis considered as a transition method. - Starting with
AndWhenis considered as a transition method that runs after When steps. - Starting with
Thenis considered as an asserting method. - Starting with
Andis considered as an asserting method. - Starting with
TearDownis considered as a finally method which is run after all the other steps.Not reported.
Each of the above methods is displayed on reports unless otherwise stated.
This example shows a scenario class with all of the method names that Specify supports out of the box in a random order.
internal class UserStoryScenarioWithAllSupportedStepsInRandomOrder
: ScenarioFor<ConcreteObjectWithNoConstructor>
{
public UserStoryScenarioWithAllSupportedStepsInRandomOrder()
{
Steps.Add("Implementation - Constructor");
}
public void TearDown()
{
Steps.Add("Implementation - TearDown");
}
public void Setup()
{
Steps.Add("Implementation - Setup");
}
public void AndGivenSomeOtherPrecondition()
{
Steps.Add("Implementation - AndGivenSomeOtherPrecondition");
}
public void ThenAnExpectation()
{
Steps.Add("Implementation - ThenAnExpectation");
}
public void AndThenAnotherExpectation()
{
Steps.Add("Implementation - AndThenAnotherExpectation");
}
public void WhenAction()
{
Steps.Add("Implementation - WhenAction");
}
public void GivenSomePrecondition()
{
Steps.Add("Implementation - GivenSomePrecondition");
}
public void AndWhenAnotherAction()
{
Steps.Add("Implementation - AndWhenAnotherAction");
}
}
All of the methods are executed and the Setup and Teardown methods are not displayed on the report:
Scenario: User Story Scenario With All Supported Steps In Random Order
Given some precondition
And some other precondition
When action
And another action
Then an expectation
And another expectation