test JUnit multipla usando FEST
Domanda
Ho scritto diversi metodi di prova JUnit per testare la mia Java Swing GUI (utilizzando FEST ). La mia classe è nel seguente formato:
public class Tests
{
@BeforeClass
public static void beforeClass() throws Exception { ... }
@Before
public void before() throws Exception { ... }
@After
public void after() throws Exception { ... }
@AfterClass
public static void afterClass() throws Exception { ... }
@Test
public void testA() { ... }
@Test
public void testB() { ... }
@Test
public void testC() { ... }
}
Quando ho eseguito questa classe in Eclipse, si corre solo il test Testa, e non TestB o TestC. Se io commento Testa, TestB corre - così sembra per eseguire solo il primo test ogni volta ??p>.
JUnit in 'corre: 2/3' Eclipse spettacoli. Dopo aver completato il primo test, ma non progredire ulteriormente, o mostrare eventuali errori
C'è qualcosa che sto facendo male? Sto usando JUnit 4.8.1 e 1.2 FEST.
Soluzione
Ho il sospetto che si ha un effetto collaterale in testA
che sta bloccando il codice in testB
esecuzione. E 'difficile dire che cosa sta accadendo, senza i dettagli in testA
e testB
, ma posso darvi alcune indicazioni generali.
si è fuori ad un buon inizio commentando testA
. Quando si esegue questa operazione, fare entrambe le cose e testB
testC
periodo?
Prova il drill-down in testA
e lentamente commentando i dettagli in ciò che è testA
sotto fino a test eseguiti sia testA
e testB
. Una volta fatto questo, è almeno il know dove è il problema.
Per esempio, se si guarda il codice qualcosa del tipo:
public void testA() {
doX();
doY();
doZ();
// Assert stuff
...
}
Commento fuori tutto dopo doX()
e vedere cosa succede. Se funziona, allora doY()
rimuovere il commento e vedere cosa succede. Se non lo fa il lavoro, poi il drill-down in doX()
e iniziare commentando e ri-esecuzione di nuovo i test.
Questo dovrebbe aiutare a individuare i dettagli di dove le cose stanno andando male. Se siete ancora perplessi quando a capire questo, tornare indietro e fare una domanda intorno a questi dettagli.
Buona fortuna trovare il vostro bug!
Altri suggerimenti
Sembra che il tuo frammento di codice è OK.
È possibile controllare se ogni metodo @Test è indipendente per gli altri, ogni metodo di prova non dovrebbe condividere stesso contesto. Garantire @Before
e @After
hanno comportamenti corretti.