JUnit @Parametrisierte Funktion wird ausgeführt, bevor @BeforeClass in einer test-suite?
Ich bin mit einem JUnit-test-suite laufen noch ein paar tests, von denen mehrere Male mit @Parametriert werden. Ich finde, dass wenn ich mit meinen tests, die @Parametrisierte Funktion wird ausgeführt, bevor @BeforeClass. Ist das erwartete Verhalten, oder ist etwas anderes passiert? Ich hätte erwartet, dass die @BeforeClass laufen würde, bevor die tests gestartet werden.
Hier ist meine test-suite:
@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class })
public class TestSuite {
@BeforeClass
public static void setup() throws Exception {
//setup, I want this to be run before anything else
}
}
Test1 wird @Parametrisierten:
public class Test1 {
private String value;
//@Parameterized function which appears to run before @BeforeClass setup()
@Parameterized.Parameters
public static Collection<Object[]> configurations() throws InterruptedException {
//Code which relies on setup() to be run first
}
public Test1(String value) {
this.value = value;
}
@Test
public void testA() {
//Test
}
}
Wie kann ich dieses Problem beheben laufen die @BeforeClass-setup () - Funktion vor der Ausführung noch etwas anderes?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist leider, wie beabsichtigt funktioniert. JUnit braucht, um alle aufzuzählen, die Testfälle vor dem Start des Tests und für parametrisierte tests, die Methode annotiert mit
@Parameterized.Parameters
wird verwendet, um zu bestimmen, wie viele tests es gibt.@Parameters
Methode, aber wenn es scheitert, bin ich mir nicht sicher, ob JUnit wird die Ursache des Fehlers offensichtlich. Persönlich würde ich nicht verwendenParameterized
wenn meine Parameter wurden aus einer Datenquelle, könnte scheitern oder nur langsam-Abfrage.Obwohl beeing ein bisschen verschiedene Lösung, ein static-block funktioniert der trick. Beachten Sie auch, dass es sein muss in der Test1.class. Aber außer, dass es funktioniert 😉
Vor kurzem lief in ähnliches Problem und gelöst problem mit der Funktion. Beispiel unten.
In Ihrem Szenario tun, setup der Datenbank in @Before oder @BeforeClass dann Spritzen in Funktion