mi piacerebbe scrivere una classe BaseTest
che fornisce semplicemente un "setUp()
metodo universale" per tutte le sottoclassi estendono:JUnit test di base di ATP
public class BaseTest {
@Before
public void setUp() {
System.out.println("setUp() was called!");
// Doesn't really matter what this is doing...
EnvironmentConfigurator.configureEnvForTesting();
}
}
Poi:
public class WidgetTest extends BaseTest {
@Test
public void test1() {
fail();
}
@Test
public void test2() {
fail();
}
}
Quindi idealmente, ogni volta che viene eseguito un metodo sottoclasse annotato da @Test
, JUnit chiamerebbe prima il metodo BaseTest#setUp()
, che fa tutto (non importa). Forse la sua reimpostazione di alcuni stati simulati su un valore iniziale in modo che ogni test possa iniziare su una "lavagna pulita", ecc. Di nuovo, non ha molta importanza.
Purtroppo quando si esegue questo codice, vedo solo setUp() was called!
stampa alla schermata volta, così chiaramente BaseTest
non è "wrapping" i miei @Test
metodi come voglio. C'è un modo per raggiungere questo obiettivo? Grazie in anticipo!
Grazie a @Bedwyr Humphreys (+1) - Ho modificato le istruzioni 'fail()' in punto e virgola (per forzare il passaggio dei metodi di test) e sì, il metodo padre 'setUp()' è stato chiamato due volte. Quindi ci deve essere qualcosa sull'utilizzo di questa configurazione combinata con casi di test falliti che fanno sì che il metodo 'setUp()' sia chiamato una sola volta. Grazie ancora. – IAmYourFaja
L'ho eseguito con fail() (in Eclipse) ed è stato ancora chiamato due volte – blank
Strano ... beh non importa, rimuovendo il 'fail()' s funziona così sono a posto. Grazie ancora. – IAmYourFaja