2017-11-19 4 views
1

Ich habe Probleme beim Testen einer Spring-App. Der aktuelle Ansatz in meinem Team besteht darin, Szenarien in Gherkin zu schreiben und Serenity seine hübschen Berichte liefern zu lassen.Parametrisierte Junit-Tests mit Serenity-Berichten

Eine neue Komponente in der App wird viele Testfälle benötigen. Die Anforderungen werden in ein paar "parsable" Excel-Dateien zur Verfügung gestellt, so dass ich dachte, es wäre nett, sie einfach Zeile für Zeile in einem parametrisierten Junit-Test zu verwenden. Eine andere Option wäre, eine aufgeblähte Gherkin-Funktion zu schreiben und jedes Beispiel manuell mühsam zu verfassen.

So dachte ich an so etwas wie das:

@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 */ 
    } 
} 

Das funktioniert reibungslos, aber ich lief in Schwierigkeiten versucht

@RunWith(SerenityRunner.class) 

Das Problem zu verwenden, ist, dass Junit nicht mehrere Läufer unterstützt. Eine Lösung, die ich gefunden habe, besteht darin, eine verschachtelte Klasse zu erstellen und jedes mit einem anderen Läufer zu kommentieren, aber ich weiß nicht, wie ich es machen soll (welcher Läufer sollte draußen sein, wo mache ich eigentlich die Tests, usw.) .

Irgendwelche Gedanken?

+1

Welche Version von JUnit verwenden Sie? Wenn ich mich richtig erinnere, hat JUnit 5 Unterstützung für mehrere Läufer über @ExtendWith hinzugefügt. Check out (http://www.baeldung.com/junit-5-migration - Abschnitt 3.5) und http://junit.org/junit5/docs/current/user-guide/#extensions –

+0

Ich habe tatsächlich eine andere Lösung gefunden , aber danke trotzdem. Ich versuche, es mit JUnit 4 arbeiten zu lassen, aber was Sie vorgeschlagen haben, könnte wahrscheinlich auch eine praktikable Option sein - vielleicht könnten wir ein Upgrade verwenden;). – DCzo

Antwort

1

Eigentlich Serenity bietet einen anderen Läufer - SerenityParameterizedRunner, die die gleichen Funktionen wie JUnit Parameterized zu haben scheint.