test JUnit privato, in fasi: Tutti @Before, allora tutto @Test, allora tutto @After
-
29-09-2019 - |
Domanda
Mi piacerebbe un corridore JUnit che esegue tutti i metodi @Before, allora tutti i metodi @Test, poi tutti i metodi @After.
Questo è come funziona il mio sistema-test. I metodi @Before vengono eseguiti, per impostare i dati del test e gli scenari. l'applicazione viene avviata. Poi i metodi @Test vengono eseguite con l'applicazione in esecuzione in background. Tali metodi @Test possono modificare i dati o di rispondere alla domanda. Poi il quadro attende l'applicazione per finire. In seguito, i metodi @After vengono eseguiti per verificare i risultati del test.
Uso già annotazioni JUnit, metodi di asserzione, e altri vari pezzi. Ma io proprio non riesco a capire come utilizzare junits corridori per eseguire metodi di prova in questo modo. Non ho potuto fare testa né coda dell'interfaccia "Computer" in JUnit 4.8, o capire come applicare regole a questo.
Soluzione
Questo non è quello che fa JUnit è. JUnit ha una filosofia di progettazione che enfatizza test di unità indipendenti. Come tale, non è un quadro naturale per test di sistema. Che cosa si vuole fare si adatta bene in TestNG (che come un disegno obiettivo cerca di cavalcare entrambi i test di unità e di sistema).
In JUnit il @Before e @After vengono eseguiti prima e dopo la ogni di prova. È possibile calzascarpe questo genere di cose in JUnit usando una suite, che i riferimenti tutti i test ed è responsabile di tutti i setup e teardown, così metodi @BeforeClass e @AfterClass della suite vengono eseguiti prima e dopo la suite, che se organizzarlo correttamente potrebbe essere tutti i test di sistema.
Ci sono molte sfide organizzative nel codice quando si diventa grande con l'approccio JUnit, quindi vorrei suggerire di prendere in considerazione e il quadro alternativa, se questa è la maggior parte di ciò che si vuole fare.
Altri suggerimenti
Penso che si possa risolvere questo facendo solo un metodo di test vero e proprio, che solo le chiamate sono i test reali, che non si dichiara come lLa.
Un po 'come:
@Before
public void beforeTest(){}
@After
public void afterTest(){}
@Test
public void test(){
test1();
test2();
test3();
}
public void test1(){}
public void test2(){}
public void test3(){}