dimanche 19 novembre 2017

Parametrized Junit tests with Serenity reports

I ran into some trouble testing a Spring app. The current approach in my team is to write scenarios in Gherkin and have Serenity provide its pretty reports.

A new component in the app will need a lot of test cases. The requirements will be provided in a few 'parsable' excel files so I thought it would be neat to just use them directly, row by row, in a Junit parametrized test. Another option would be to write a bloated Gherkin feature and tediously compose each example manually.

So I thought of something like that:

@RunWith(Parameterized.class)
private static class Tests {
    @Parameterized.Parameters(name = "...") // name with the params
    public static Collection params() {
         // parse excel here or use some other class to do it
    }

    @Test
    public void test() {
        /* do the actual test - it involves sending and receiving some JSON objects */
    }
}

This works smoothly but I ran into trouble trying to use

@RunWith(SerenityRunner.class)

The problem is that Junit does not support multiple runners. A solution I found is to make a nested class and annotate each with a different runner, but I don't know how to make it work (which runner should be on the outside, where do I actually run the tests, an so on).

Any thoughts?

Aucun commentaire:

Enregistrer un commentaire