Basic JUnit integration

We have already seen a simple example of a JUnit Serenity test shown earlier on First Steps:

@RunWith(SerenityRunner.class)      (1)
public class ASimpleTest {

    MathWizSteps michael;           (2)

    public void addingSums() {
        // Given
        michael.startsWith(1);       (3)

        // When
        michael.adds(2);             (3)

        // Then
        michael.shouldHave(3);       (3)
1 You run the JUnit test using the Serenity test runner
2 The @Steps annotation marks a Serenity step library
3 Create the test following the Given/When/Then pattern and using step methods from the step library

The most important thing here is the SerenityRunner test runner. This class instruments any step libraries in your class, and ensures that the test results will be recorded and reported on by the Serenity reporters.

Human-readable method titles

By default, Serenity will convert the test method names into a readable form in the reports. This will convert both camelCasedMethods and methods_with_underscores into a form with spaces. So both 'shouldCalculateCorrectOutcome()' and 'should_calculate_correct_outcome()' will appear as "Should calculate correct outcome" in the test reports.

You can override this convention by adding a @Title annotation onto the test method, as shown here:

public class WhenEarningFrequentFlyerStatus {

    TravellerStatusSteps travellerSteps;

    @Title("Members earn Gold status after 5000 points (50000 km)")         (1)
    public void earnGoldAfter5000Points() {
        // GIVEN

        // WHEN

        // THEN
1 The @Title annotation lets you provide your own title for this test in the test reports

Also @Title can be used for providing information about issues for this test, you can find more info in Linking scenarios/tests with issues