Suite di test JUnit 4


99

Come si creano suite di test con JUnit 4?

Tutta la documentazione che ho visto non sembra funzionare per me. E se utilizzo la procedura guidata Eclipse, non mi dà la possibilità di selezionare nessuna delle classi di test che ho creato.


4
Con Eclipse 3.7 Indigo, la procedura guidata della suite di test ora supporta JUnit 4
Fabian Steeg

Risposte:


147
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}

61

Puoi creare una suite in questo modo. Ad esempio una AllTestsuite sarebbe simile a questa.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Ora puoi eseguirlo in un paio di modi diversi:

  1. fare clic con il pulsante destro del mouse ed eseguire in Eclipse come Junit test
  2. creare un'applicazione Java eseguibile; Classe principale = 'org.junit.runner.JUnitCore' e Args = 'my.package.tests.AllTests'
  3. esegui dalla riga di comando:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests

Aggiungerei ancora più VoteUp per CMDLine :)
Gruber

9

Penso che TestSuite sia caduto in disgrazia. Potrebbe essere stato lo stile prima della 4.x, ma per quanto ne so non lo è ora.

Annoto solo i test che desidero e poi eseguo la classe. Vengono eseguiti tutti i test annotati. Potrei usare Ant, ma la maggior parte delle volte li faccio eseguire da IntelliJ per me.


11
Potrei sbagliarmi, ma penso che TestSuite sia ancora valido quando dobbiamo specificare l'ordine dei test, specialmente nei test di integrazione automatizzati in cui il test di scenari più piccoli dovrebbe venire prima di scenari più complessi.
bertie

@duffymo Trovo il tuo commento interessante dato che finora sono stato istruito nella linea di pensiero pre-4.x riguardo all'organizzazione di casi di test in testsuites
Vatsala

6
Se si dispone di un numero maggiore di test, diverse aree / moduli funzionali, una distinzione tra test non core ausiliari / più lenti / costosi e ausiliari / più lenti / costosi, per uno qualsiasi di questi motivi, si struttureranno i test in una TestSuite.
Thomas W,

1
Puoi utilizzare l' @SuiteClassannotazione in più classi e puoi nidificare le suite all'interno delle suite. La linea di pensiero per organizzarli in 3.x è ancora totalmente valida (e dovrebbe essere utilizzata). Puoi strutturare tutto esattamente come facevi prima; devi solo usare la sintassi dell'annotazione invece di TestSuite.suite(). Non c'è davvero alcun vantaggio nell'usare TestSuitel'annotazione e puoi sfruttare tutti i miglioramenti di JUnit 4 se usi l'annotazione equivalente a livello organizzativo.
Thunderforge

3

Ecco i passaggi per creare una suite JUnit in eclipse:

  1. Nella vista "Esplora pacchetti" della prospettiva "Java" di eclipse, seleziona i tuoi unit test nel loro pacchetto, all'interno del progetto java di eclipse.
  2. Fare clic con il tasto destro su uno qualsiasi dei test selezionati.
  3. Nel menu a comparsa, seleziona Nuovo, Altro ...
  4. Apri la cartella "Java", quindi apri la cartella "JUnit"
  5. Seleziona "JUnit Test Suite", quindi fai clic sul pulsante "Avanti"
  6. Seleziona il pulsante "Fine"
  7. Risultato: viene creato il file della suite "AllTests.java", con i test inclusi automaticamente
  8. Seleziona il pulsante Esegui in Eclipse
  9. Risultato: tutti i test nella suite vengono eseguiti
  10. È ora possibile puntare a questo file della suite con ANT, Jenkins o altri strumenti di integrazione continua della configurazione della build.

Informazioni sulla versione: questo è per eclipse Neon e JUnit 4. Puoi anche selezionare JUnit 3 prima di selezionare "Finish" nel passaggio 6.


Potresti pubblicare un file build.xml che mostra come eseguire questa suite di test da ANT?
LiborStefek

1

Nella parte superiore della mia testa creare una TestSuite e invoke addTests. Se vuoi che qualche fonte guardi, prova qualsiasi libreria opensource come hibernate o qualcosa di apache e dai un'occhiata sotto la directory di test dei sorgenti per una suite di test ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.