Quando si utilizza questo approccio di seguito, configurando jUnit con Suites. Abbiamo il problema quando tutti i @BeforeClass in ogni TestClass verranno eseguiti prima che inizino a essere eseguiti i test. (Per ogni n file TestClass viene eseguito @BeforeClass, dopo aver eseguito, ha iniziato a eseguire i primi file MyTest.class @Test)JUnit 4 @BeforeClass e @AfterClass quando si utilizza Suites
Ciò causerà l'allocazione di molte risorse e memoria. La mia opinione è che deve essere sbagliato, non dovrebbe ogni @BeforeClass eseguire solo prima dell'esecuzione effettiva del testclass, non quando viene avviata la Suite?
@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
...
Sono essi eseguiti prima prove ciascuno classi, o sono tutti eseguiti solo prima della prima (ma poi il secondo viene eseguito senza eseguire tutte @BeforeClass ancora)? Quest'ultimo aspetto sembra OK poiché @BeforeClass viene eseguito prima dei metodi @Test in tale test. Suppongo che la quantità di memoria non cambierà, a meno che non si pulisca dopo i test di ogni classe (e anche questi si verificano solo dopo aver completato l'intera suite). –
Ciò che ottengo adesso è che ogni @BeforeClass viene eseguito per primo. @BeforeClass (Mytests) @BeforeClass (Mytests2) @Test (MyTests) @Test (MyTests2) A mio punto di vista, questo non è corretto. Correggimi se ho torto, ma qualcosa deve essere impostato in modo errato per causare questo problema. –