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.

È stato utile?

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(){}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top