Wenn Sie diesen Ansatz unten verwenden, richten Sie das jUnit mit Suites ein. Wir haben das Problem, wenn alle @BeforeClass in jeder Testklasse ausgeführt werden, bevor Tests gestartet werden. (Für jede n TestClass-Datei wird die @BeforeClass ausgeführt, danach werden die ersten MyTest.class-Dateien gestartet @Test)JUnit 4 @BeforeClass & @AfterClass bei Verwendung von Suites
Dies wird dazu führen, dass wir viel Ressourcen und Arbeitsspeicher zuweisen. Meine Gedanken waren, dass es falsch sein muss, sollte nicht jede @BeforeClass nur ausgeführt werden, bevor die eigentliche Testklasse ausgeführt wird, nicht wenn die Suite gestartet wird?
@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTests.class, Mytests2.class, n1, n2, n })
public class AllTests {
// empty
}
public class MyTests { // no extends here
@BeforeClass
public static void setUpOnce() throws InterruptedException {
...
@Test
...
public class MyTests2 { // no extends here
@BeforeClass
public static void setUpOnce() throws InterruptedException {
...
@Test
...
Sind sie vor jeder Klassen die Tests ausgeführt werden, oder alle ausgeführt werden, nur vor dem ersten (aber dann wird der zweite Lauf ohne alle @BeforeClass laufen nochmal)? Letzteres scheint in Ordnung zu sein, da @BeforeClass vor den @ Test-Methoden in diesem Test ausgeführt wird. Die Menge an Speicher würde ich nicht ändern, nehme ich an, es sei denn, Sie bereinigen nach jeder Klasse Tests (und diese sind auch nur, nachdem die gesamte Suite abgeschlossen ist). –
Was ich jetzt bekomme ist, dass jede @BeforeClass zuerst ausgeführt wird. @BeforeClass (MyTests) @BeforeClass (Mytests2) @Test (MyTests) @Test (MyTests2) Zu meiner Sicht ist dies nicht korrekt. Korrigieren Sie mich, wenn ich falsch liege, aber etwas muss falsch eingerichtet sein, um dieses Problem zu verursachen. –