multiple ways execute junit tests
Questo tutorial mostra diversi modi per eseguire i test JUnit come l'esecuzione come test JUnit, l'utilizzo di tasti di scelta rapida o l'esecuzione di test JUnit dalla riga di comando, ecc:
Abbiamo visto come scrivere i casi di test di base di JUnit e avere un approccio alle apparecchiature di prova come una delle buone pratiche di programmazione per JUnit nel nostro precedente tutorial.
In questo tutorial, diamo uno sguardo ai diversi modi che possiamo utilizzare per eseguire i test per JUnit. Sarai sorpreso di vedere il numero di opzioni disponibili per eseguire questi casi di test.
=> Guarda qui la semplice serie di formazione JUnit.
Cosa imparerai:
- Diversi modi per eseguire i test JUnit
- # 1) Esegui come test JUnit
- # 2) Esegui l'ultimo test JUnit eseguito tramite l'opzione di menu
- # 3) Esegui utilizzando i tasti di scelta rapida
- # 4) Esegui un solo metodo di test in una classe
- # 5) Esegui i test JUnit dalla riga di comando
- # 6) Esegui Test Suite utilizzando Testrunner Class
- # 7) Esegui casi di test JUnit utilizzando Maven
- Conclusione
- Lettura consigliata
Diversi modi per eseguire i test JUnit
Per eseguire i test JUnit, ci sono alcuni modi in cui è possibile eseguire un singolo file di classe con uno o più metodi di test attraverso le seguenti opzioni:
- Opzione 'Esegui come test JUnit'.
- Esegui l'ultimo test JUnit eseguito tramite l'opzione di menu.
- Esegui utilizzando i tasti di scelta rapida.
- Esegui un solo metodo di test in una classe.
- Corri attraverso la riga di comando.
- Esegui utilizzando il file di classe Testrunner.
- Corri usando anche Maven.
Nota: L'esecuzione del test JUnit tramite Maven sarà contemplata in un tutorial separato per JUnit Maven.
Ribadendo il punto, in questo tutorial impareremo come raggruppare più test in una suite di test e come eseguire la suite in modi diversi. Inoltre, deve dettagliare alcune informazioni aggiuntive pertinenti e correlate.
# 1) Esegui come test JUnit
Il modo più semplice in cui puoi eseguire i test JUnit è:
Metodo 1:
- Fare clic con il pulsante destro del mouse sul file di classe nella vista Script
- Selezionare Esegui come -> Test JUnit
- Il file di classe viene eseguito.
Metodo 2:
- Allo stesso modo, puoi selezionare il file di classe dalla vista Esplora pacchetti
- Fare clic con il pulsante destro del mouse sul file
- Selezionare Esegui come -> Test JUnit
- Il file di classe viene eseguito.
Nota: In questo modo potresti eseguire un file di classe alla volta.
# 2) Esegui l'ultimo test JUnit eseguito tramite l'opzione di menu
È possibile eseguire un file di classe JUnit mantenendo un file di classe aperto nell'editor. Vai al menu in alto di Eclipse => Seleziona Esegui => Esegui . L'opzione Esegui -> Esegui fondamentalmente significa rieseguire il test che hai eseguito per ultimo.
Consideriamo una classe JUnit con più metodi / test per una migliore chiarezza su come Esegui-> Esegui lavori:
- scenario 1 : Se avessi eseguito un file metodo unico con @Test, quindi quando fai clic su Esegui-> Esegui , l'unico metodo eseguito per ultimo verrà eseguito solo questa volta e non l'intera classe JUnit.
- Scenario 2 :Considerando che hai eseguito il file intera classe in precedenza, Esegui-> Esegui rieseguirà l'intero file di classe.
Ora che sappiamo che Esegui-> Esegui esegue il test che hai eseguito per ultimo, questo ci porta a un file domanda se puoi cambiare la preferenza dell'opzione Esegui-> Esegui?
La risposta alla domanda è Sì, la preferenza dell'opzione Esegui-> Esegui può essere modificata. C'è una certa configurazione collegata a Esegui-> Esegui.
Ecco come puoi farlo:
per) L'impostazione di esecuzione di Eclipse è fondamentalmente predefinita esegui la risorsa selezionata o l'editor attivo se è avviabile .
Quindi, cosa fa l'impostazione predefinita - 'Eseguire la risorsa selezionata o l'editor attivo se è avviabile' fare?
La risposta è che non eseguirà l'ultima applicazione avviata, ma seguirà la riesecuzione dell'ultima applicazione avviata per l'editor attivo .
b) Allora come si modifica la preferenza predefinita?
La risposta a questa domanda è che puoi modificare la preferenza predefinita in Eclipse per eseguire l'ultima applicazione avviata indipendentemente dall'editor attivo hai.
Di seguito è riportato come modificare la preferenza dell'opzione Esegui utilizzando Esegui -> Esegui:
- Navigare verso Windows => Preferenze => Esegui / Debug => Avvio
- 'Operazione di avvio' ha un pulsante di opzione predefinito: ' Avvia l'applicazione avviata in precedenza ' selezionato nella seconda opzione ' Avvia la risorsa selezionata o l'editor attivo. Se non avviabile : ’.
- Potrebbe essere necessario modificare questa preferenza sul primo pulsante di opzione, ad es. ' Avvia sempre l'applicazione avviata in precedenza '.
# 3) Esegui utilizzando i tasti di scelta rapida
È possibile selezionare il file di classe dalla vista Script o dalla vista Esplora pacchetti e utilizzare i seguenti tasti di scelta rapida per eseguire i test JUnit:
- Premi i tasti ALT + MAIUSC + X, T per eseguire il file di classe JUnit.
- Un'alternativa a questo sarebbe la stampa ALT + R quindi CTRL + F11 per eseguire un file di classe JUnit. ALT + R quindi CTRL + F11 è la scorciatoia per l'opzione di menu Esegui -> Esegui
# 4) Esegui un solo metodo di test in una classe
A volte, potresti voler eseguire un singolo metodo di prova JUnit.
Nel caso, c'è più di un metodo all'interno del file di classe JUnit:
- Puoi selezionare o posizionare il cursore sul nome del metodo all'interno della visualizzazione dello script.
- Utilizzare i tasti di scelta rapida sopra menzionati o le opzioni fornite sopra per eseguire solo il metodo appena selezionato.
Nota: ALT + MAIUSC + X, T può eseguire i metodi selezionati come previsto. Tuttavia, se desideri eseguire un metodo specifico in una classe JUnit, deve essere un testcase annotato con @Test altrimenti mostra un errore di inizializzazione.
In altre parole, se si selezionano metodi in @Before o @After (qualsiasi annotazione diversa da @Test), l'esecuzione del metodo specifico verrebbe errata.
# 5) Esegui i test JUnit dalla riga di comando
Come si esegue qualsiasi file di classe Java tramite la riga di comando, è anche possibile compilare ed eseguire file di classe JUnit tramite la riga di comando.
Tratteremo i seguenti argomenti secondari qui per capire come possiamo eseguire i test JUnit tramite la riga di comando:
- Come compilare un test JUnit nella riga di comando?
- Come eseguire un test JUnit nella riga di comando?
- Informazioni aggiuntive sull'esecuzione dalla riga di comando.
- Come correggere un errore di comando non riconosciuto per il comando javac?
- Vantaggi dell'esecuzione di test utilizzando la riga di comando.
# 5.1) Come compilare un test JUnit nella riga di comando?
La condizione preliminare per la compilazione e l'esecuzione di un file di classe JUnit tramite prompt dei comandi è:
- Per prima cosa aggiungi i file jar JUnit rilevanti nel classpath.
- Imposta le variabili d'ambiente come menzionato nel SetUp di JUnit tutorial.
- Quindi compilare un file di classe JUnit.
- La sintassi per la compilazione di un file di classe JUnit tramite la riga di comando è:
javac -cp junit-4.0.0.jar;. JUnitProgram.java
Qui, javac è il compilatore Java che utilizza l'opzione -cp.
Il comando javac -cp cerca i seguenti parametri:
- Il file jar JUnit è seguito da un punto e virgola.
- Il percorso della directory in cui esiste il file di origine.
- Il nome del file della classe
Nella sintassi di cui sopra, cosa implica il punto (.)?
Abbiamo menzionato un punto al posto dell'intero percorso della directory.
Il punto implica che:
- Il classpath include già la directory corrente per i file di origine Java.
- La JVM (Java Virtual Machine) presume automaticamente che la directory corrente sia la posizione in cui si trovano i file di origine.
- JVM quindi cerca lì il nome del file JUnit menzionato. Il nome del file è l'ultimo parametro fornito nel comando di compilazione.
Puoi controllare i parametri che vanno in -cp attraverso i seguenti passaggi:
- Apri il prompt dei comandi.
- Digita javac e premi INVIO.
- Vengono visualizzate tutte le opzioni pertinenti, incluso -cp. Troverai che -cp va con come parametro in cui il percorso è il percorso dei file di classe che JVM cerca.
Screenshot qui sotto:
Come compilare più file contemporaneamente?
È possibile compilare più file di prova JUnit contemporaneamente separando i nomi dei file con spazi.
Di seguito è riportato un esempio di dove si compilano i file java JUnitProgram e demoTest:
javac -cp junit-4.0.0.jar;. JUnitProgram.java demoTest.java
# 5.2) Come eseguire un test JUnit dalla riga di comando?
Proprio come javac è il compilatore Java utilizzato, allo stesso modo java -cp viene utilizzato per eseguire i file di classe Java comprese le classi JUnit.
Di seguito è la sintassi che potresti seguire:
java -cp junit-4.0.0.jar;. JUnitProgram demoTest
Questo comando esegue entrambi i file JUnitProgram.java e demoTest.java uno dopo l'altro.
# 5.3) Ulteriori informazioni sull ''esecuzione dalla riga di comando'.
come eseguire file .jar su Windows
Ecco alcune informazioni aggiuntive su come correggere un errore con il comando javac e perché utilizzare l'opzione di esecuzione della riga di comando
# 5.3.1) Come posso correggere l'errore di comando non riconosciuto per il comando javac?
La maggior parte di noi riscontrerebbe questo problema durante il tentativo di eseguire il file javac comando tramite la riga di comando. Questo è successo anche a me; quindi abbiamo pensato di scriverlo qui.
per) Abbiamo inserito il comando javac e premuto accedere sul prompt dei comandi.
b) Il messaggio di errore - javac non è riconosciuto come comando interno o esterno, programma eseguibile o file batch si è presentato come di seguito:
È qui che inizia la compilazione dei file di classe Java dalla riga di comando. Quindi, l'errore è davvero motivo di preoccupazione e non può essere ignorato.
Per risolvere il problema, segui i passaggi seguenti e Ecco!!! vedi che l'errore è sparito:
- Dimostriamo questo processo utilizzando un file Java di base. Il primo passo che potresti fare è creare una classe Java di base Per esempio. : 'Calculator.java'
- Individueremo Calculate.java da Windows Explorer e copieremo il percorso.
- Cambia la directory nel prompt dei comandi con il percorso che hai copiato (il percorso del file di origine). Usa cd per cambiare la directory.
- Ora imposta il PERCORSO nella cartella jdk bin usando il comando.
SET PATH = e premere ENTER.
- Qui, il percorso jdk è C: Program Files Java jdk1.8.0_181 bin. Quindi, abbiamo impostato il percorso di conseguenza. Il risultato non mostra nulla premendo INVIO dopo il comando.
- Ora verifica se la JVM riconosce il comando javac inserendo il comando javac e premendo INVIO.
-
- Se riconosce il comando, come risultante viene visualizzato un insieme di opzioni valide per javac.
- Altrimenti l'errore verrà visualizzato di nuovo.
Di seguito è riportato uno screenshot che mostra che siamo riusciti a eliminare l'errore.
Non proviamo a eludere una domanda essenziale qui:
Perché la JVM ha riconosciuto il comando javac dopo aver impostato il percorso della cartella bin jdk?
Siamo sicuri che anche tu avrai questa domanda nella tua mente. Di seguito è la risposta.
- La cartella jdk bin contiene tutte le librerie per il comando javac. Quindi, questo è il motivo per cui, quando si imposta il percorso di conseguenza, la JVM è ora in grado di riconoscere il comando javac senza alcun problema.
- Vedi il cartella javac sotto il jdk bin nell'immagine sottostante.
- È quindi possibile eseguire il comando 'Java compile and run' utilizzando la riga di comando. Inoltre, ricorda anche di impostare la variabile CLASSPATH in modo appropriato. Variabile JAVA_HOME e JUNIT_HOME per file Java e file JUnit, rispettivamente.
# 5.3.2) Vantaggio di eseguire test utilizzando la riga di comando:
Discutiamo rapidamente del vantaggio rispetto all'esecuzione di testcase Java / JUnit tramite la riga di comando.
Come già saprai, non esiste una regola rigida e veloce sull'esecuzione dei file di classe tramite la riga di comando. È solo un modo alternativo su come gestire la compilazione e l'esecuzione dei file di classe.
Se chiedi se c'è un vantaggio speciale nell'avere un know-how sull'esecuzione dei test JUnit tramite riga di comando, allora, diremo 'Certamente, sì'.
Il motivo di un 'Sì' è fornito di seguito:
- Tutte queste serie di passaggi che abbiamo seguito sopra; potrebbe essere aggiunto nel blocco note e convertito in un file batch.
- Ora, quando si esegue questo file batch con un doppio clic, potrebbe attivare la compilazione e l'esecuzione di più file di test JUnit denominati nel file batch.
Qual è il vantaggio di avere un file batch per la compilazione e l'esecuzione dei file Java?
- Un file batch / jar potrebbe agire come un'utilità di facile utilizzo che potrebbe consentire a chiunque non sia a conoscenza della logica interna del codice ed eseguire più casi di test molto facilmente.
- Ciò potrebbe eliminare la necessità di avere uno sviluppatore specializzato o un QA per eseguire questi lavori di esecuzione dei test. L'attività di esecuzione può essere delegata a qualsiasi risorsa senza preoccuparsi dei vincoli di abilità.
Nella prossima opzione alternativa, vedremo un altro modo vantaggioso e lodevole di eseguire i nostri casi di test JUnit.
# 6) Esegui Test Suite utilizzando Testrunner Class
Negli scenari in tempo reale, l'esecuzione di un testcase alla volta è l'opzione meno preferita.
- Abbiamo casi in cui dobbiamo eseguire un gruppo di casi di test correlati / non correlati.
- Ad esempio, potrebbe essere necessario creare ed eseguire suite di test di regressione o suite di test del fumo.
Ora impareremo l'implementazione di diverse annotazioni utilizzate per creare suite di test ed eseguire la suite.
Il processo complessivo di esecuzione della suite di test utilizzando Test Runner è come nel flusso di lavoro seguente:
- Crea JUnit classe 1, JUnit classe 2,…. JUnit classe n.
- Creare il file di classe della suite di test raggruppando i casi di test.
- Crea un file di classe Testrunner per richiamare la suite di test creata.
- Esegui la classe Testrunner.
La struttura dei programmi attraverso i quali dimostreremo la creazione della suite di test e l'esecuzione del file runner è mostrata nell'immagine sottostante:
Qui tratteremo i sotto-argomenti:
- Creazione di classi JUnit
- Creazione di suite di test
- Creazione di un file Testrunner ed esecuzione delle suite di test che lo utilizzano.
- Ulteriori informazioni sul funzionamento dell'annotazione @RunWith.
# 6.1) Creazione di classi JUnit
Iniziamo creando due semplici file di classe JUnit:
- JUnitTestCase1.java - Include il codice per verificare un valore numerico previsto: la variabile Valore1 corrisponde a un valore effettivo della variabile Valore2.
- JUnitTestCase2.java - Include il codice per verificare se la variabile stringa prevista strValue e la variabile stringa effettiva strActual partite.
Questi sono fondamentalmente due casi di test che proveremo a inserire in un raggruppamento logico chiamato suite di test e farlo funzionare uno dopo l'altro.
Codice per JUnitTestCase1.java
package demo.tests; import static org.junit.Assert.*; import java.util.*; import java.lang.String; import static org.testng.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; public class JUnitTestCase1 { public int Value1=6000; @Test public void junitMethod1(){ int Value2=9000; Assert.assertEquals(Value1, Value2); } }
Codice per JUnitTestCase2.java
package demo.tests; import static org.junit.Assert.*; import java.util.*; import java.lang.String; import static org.testng.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; public class JUnitTestCase2 { public String stringValue='JUnit'; @Test public void junitMethod2(){ String strActual='Junit1'; Assert.assertSame(stringValue, strActual); } }
# 6.2) Creazione della suite di test:
Questa sezione e la sezione successiva svolgono un ruolo di primo piano nell'intero processo di creazione ed esecuzione di una suite di test. In questa sezione cercheremo di capire come raggruppare più classi di test JUnit e collegarle in una suite di test .
Come per l'immagine strutturale sopra, creiamo una suite di test che raggruppa JUnitTestCase1.java e JUnitTestCase2.java e denominiamo la suite come JUnitTestSuite.java
Le due annotazioni che ci aiutano a realizzare la creazione di una suite di test sono:
- @RunWith e
- @SuiteClasses
Pacchetti necessari per le annotazioni:
- Dovrai importare il pacchetto org.junit.runner.RunWith; per l'inclusione dell'annotazione @RunWith.
- Avrai bisogno del pacchetto org.junit.runners.Suite.SuiteClasses affinché @SuiteClasses funzioni.
- Inoltre, dovrai anche importare il pacchetto org.junit.runners.Suite per passare un parametro Suite.class nell'annotazione @RunWith.
Esaminiamo il codice per una migliore comprensione !!
Codice per JUnitTestSuite.java
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({JUnitTestCase1.class, JUnitTestCase2.class }) public class JUnitTestSuite { @BeforeClass public static void printMe() { System.out.println('JUnitTestSuite is the test suite grouping testcase 1 and testcase 2'); } }
Comprensione del codice per JUnitTestSuite.java:
- @RunWith aiuta la JVM a capire che tipo di classe runner dovrebbe eseguire Per esempio. Suite.class o Cucumber.class
- Qui, il parametro di @RunWith è Suite.class . Aiuta JVM a riconoscere che il file corrente in cui viene utilizzato @RunWith (Suite.class) svolge un ruolo nella Test Suite.
- I nomi delle classi di test JUnit da associare in una suite devono essere passati come array di stringhe sotto forma di parametri per @SuiteClasses, ciascuno separato da una virgola.
- Ciò consente a JVM di sapere quali sono tutti i casi di test che devono essere raggruppati nella suite.
- Il nome della suite sarà il nome del file della classe JUnit annotato con @RunWith e @SuiteClasses che in questo caso è JUnitTestSuite.
# 6.3) Crea il file Test Runner ed esegui JUnit Test suite utilizzando Test Runner
L'ultimo passaggio ci aiuterà a eseguire la suite di test che abbiamo appena creato nella sezione precedente utilizzando un file Testrunner.
- Creeremo ora un file Java denominato SuiteRunnerFile.
- Questo SuiteRunnerFile.java non è una classe JUnit ma un normale file Java con il metodo principale al suo interno.
Diamo un'occhiata al codice e poi proviamo a capirlo.
Codice per SuiteRunnerFile.java
package demo.tests; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class SuiteRunnerFile { public static void main(String args()) { Result result=JUnitCore.runClasses(JUnitTestSuite.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } } }
Pacchetti necessari per l'annotazione
- È necessario importare il pacchetto org.junit.runner.JunitCore per includere il file JUnitCore classe nel codice.
- È necessario importare il pacchetto org.junit.runner.notification.Failure e org.junit.runner. Result per includere rispettivamente la classe Failure e Result nel codice.
Comprensione del codice per SuiteRunnerFile.java
- Per creare un file runner per l'esecuzione della suite di test, il file JUnitCore la classe gioca un ruolo significativo.
- Il runClasses () metodo di JUnitCore class prende il nome della classe della suite di test come parametro di input, quindi abbiamo l'istruzione JUnitCore. runClasses (JUnitTestSuite. classe ).
- Il tipo restituito di questa istruzione è Risultato oggetto classe che memorizza lo stato di successo risultante e lo stato di errore di ogni file del caso di test; post-esecuzione. Questo è il motivo per cui abbiamo un file risultato come il Risultato oggetto di classe nel codice.
- Quindi stampiamo gli eventuali errori dei casi di test. Come il metodo getFailures (), puoi anche ottenere il conteggio degli errori e il conteggio delle esecuzioni utilizzando rispettivamente il metodo getFailureCount () e getRunCount ().
- Ora SuiteRunnerFile è pronto per l'esecuzione,
- Seleziona il file da Package Explorer e
- Fare clic con il tasto destro e selezionare Esegui come -> Java, il programma viene eseguito.
Di seguito è riportato lo screenshot della finestra della console.
Spiegazione dei risultati sulla console:
La console sopra mostra che:
- Il file di classe JUnitTestSuite è stato eseguito tramite SuiteRunnerFile.
- Il metodo printMe () sotto l'annotazione @BeforeClass è stato eseguito per primo e
- Quindi i casi di test nella suite di test sono stati eseguiti uno dopo l'altro. In questo modo la suite di test può essere creata ed eseguita come pacchetto.
# 6.4) Informazioni aggiuntive - Come funziona @RunWith?
- @RunWith è un'API JUnit che in pratica accetta solo un elemento come parametro di input che è un nome file di classe runner.
- Il framework JUnit richiama la classe specificata come test runner.
Lo snippet di seguito di RunWith.java ti aiuterà a capire:
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public @interface RunWith { Class Extends Runner> value(); }
Comprensione del codice dell'interfaccia RunWith sopra:
- Il specificato valore l'elemento deve essere una classe derivata di Corridore classe . Il concetto di riflessione viene utilizzato qui.
- Un ottimo esempio di una simile classe runner è già implementato nel nostro codice, ad esempio @RunWith (Suite.class), dove un gruppo di casi di test è legato insieme per creare una suite di test.
- Allo stesso modo, un altro buon esempio di utilizzo di una classe Runner con @RunWith potrebbe essere @RunWith (Cucumber.class) che è un framework BDD (business-driven development) per l'automazione dei test utilizzando Selenium in Java. Questo aiuta il framework a eseguire i casi di test basati su Cucumber.
Nota:
- Le annotazioni ei parametri utilizzati per creare ed eseguire la suite di test JUnit in questo tutorial erano specifici per JUnit 4.
- Esiste un modo leggermente diverso di come creare una JUnit Test Suite ed eseguire il file runner in JUnit 5.
Avremo una comprensione mirata di tutti gli aspetti di JUnit 4 vs JUnit 5 presto nei nostri prossimi tutorial.
# 7) Esegui casi di test JUnit utilizzando Maven
Puoi anche avere un progetto Maven composto da test JUnit in atto ed eseguire i test tramite Maven, che verrà trattato in un tutorial separato.
Conclusione
- Abbiamo appreso tutte le diverse opzioni per eseguire i test JUnit: test singoli e più raggruppati in suite di test.
- Abbiamo acquisito ulteriori conoscenze su come aggiornare la preferenza per l'opzione Esegui, come correggere l'errore javac e in che modo l'esecuzione della riga di comando potrebbe aiutarci.
- Inoltre, abbiamo anche imparato come funziona l'annotazione @RunWith.
Quindi, c'è molto altro da seguire nei prossimi tutorial. 'Stand By' fino ad allora !!!
=> Visita qui per imparare JUnit da zero.
Lettura consigliata
- Test JUnit: come scrivere casi di test JUnit con esempi
- Tutorial JUnit per principianti - Che cos'è il test JUnit
- Che cos'è un dispositivo di prova JUnit: tutorial con esempi di JUnit 4
- Report di Specflow: come generare report di test ed eseguire test selettivi
- Scarica, installa e configura JUnit in Eclipse
- Introduzione a JUnit Framework e al suo utilizzo in Selenium Script - Selenium Tutorial # 11
- Crea test Appium per un'app Android
- Inserisci più documenti in MongoDB usando gli array