In Junit, la suite di test ci consente di aggregare tutti i casi di test da più classi in un unico posto ed eseguirli insieme.
Per eseguire il test della suite, è necessario annotare una classe utilizzando le annotazioni indicate di seguito:
- @Runwith (Suite.class)
- @SuiteClasses (test1.class, test2.class…) o
@ Suite.SuiteClasses ({test1.class, test2.class
...})
Con le annotazioni precedenti, tutte le classi di test nella suite inizieranno ad essere eseguite una per una.
Passaggi per creare Test Suite e Test Runner
Passaggio 1) Creare una semplice classe di test (ad esempio MyFirstClassTest) e aggiungere un metodo annotato con @test.
Passaggio 2) Creare un'altra classe di test da aggiungere (ad esempio MySecondClassTest) e creare un metodo annotato con @test.
Passaggio 3) Per creare una testSuite devi prima annotare la classe con @RunWith (Suite.class) e @SuiteClasses (class1.class2
...).Passaggio 4) Creare una classe Test Runner per eseguire la nostra suite di test come indicato di seguito;
Spiegazione del codice:
- Riga di codice 8: dichiarazione del metodo principale del test di classe che eseguirà il nostro test JUnit.
- Riga di codice 9: esecuzione di casi di test utilizzando JunitCore.runclasses che accetta il nome della classe di test come parametro (nell'esempio sopra, si utilizza TestSuiteExample.class mostrato nel passaggio 3).
- Riga di codice 11: elaborazione del risultato utilizzando il ciclo for e stampa del risultato non riuscito.
- Riga di codice 13: stampa del risultato positivo.
Output: ecco l'output che mostra il test riuscito senza traccia di errore come indicato di seguito:
Esempio di JUnit Test Suite
Considera un esempio più complesso
JunitTest.java
JunitTest.java è una semplice classe annotata con annotazioni @RunWith e @Suite . Puoi elencare il numero di classi .class nella suite come parametri come indicato di seguito:
pacchetto guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})public class JunitTest {// Questa classe rimane vuota, viene utilizzata solo come contenitore per le annotazioni precedenti}
SuiteTest1.java
SuiteTest1.java è una classe di test con un metodo di test per stampare un messaggio come indicato di seguito. Utilizzerai questa classe come una suite nella classe sopra menzionata.
pacchetto guru99.junit;import statico org.junit.Assert.assertEquals;import org.junit.Test;public class SuiteTest1 {public String message = "Saurabh";JUnitMessage junitMessage = nuovo JUnitMessage (messaggio);@Test (previsto = ArithmeticException.class)public void testJUnitMessage () {System.out.println ("Il messaggio di Junit è in stampa");junitMessage.printMessage ();}@Testpublic void testJUnitHiMessage () {messaggio = "Ciao!" + messaggio;System.out.println ("Junit Hi Message is printing");assertEquals (message, junitMessage.printHiMessage ());System.out.println ("Suite Test 2 è riuscito" + messaggio);}}
SuiteTest2.java
SuiteTest2.java è un'altra classe di test simile a SuiteTest1.java con un metodo di test per stampare un messaggio come indicato di seguito. Utilizzerai questa classe come suite in JunitTest.java .
pacchetto guru99.junit;import org.junit.Assert;import org.junit.Test;public class SuiteTest2 {@Testpublic void createAndSetName () {Stringa prevista = "Y";Stringa effettiva = "Y";Assert.assertEquals (previsto, effettivo);System.out.println ("Suite Test 1 è riuscito" + effettivo);}}
Produzione
Dopo aver eseguito JunitTest .java che contiene una suite con test1.java e test2.java , otterrai l'output seguente:
Sommario
In questo tutorial, hai appreso le basi del test harness e delle suite di test in dettaglio con un esempio.
- Test harness o automazione Il test è un software o una raccolta di software che consente a un utente di testare i dati con più input e controllare l'esecuzione
- Test harness abilita effettivamente un framework di test che fa tutto il lavoro di esecuzione di test utilizzando una libreria di test e generando un report di test
- In Junit, la suite di test ci consente di aggregare tutti i casi di test di molte classi in un unico posto ed eseguirli insieme.