Test con parametri JUnit con esempio utilizzando @Parameters

Sommario:

Anonim

Cos'è il test parametrizzato in Junit?

Il test parametrizzato consiste nell'eseguire lo stesso test più e più volte utilizzando valori diversi. Aiuta lo sviluppatore a risparmiare tempo nell'esecuzione dello stesso test che differisce solo per gli input e i risultati attesi.

Utilizzando il test parametrizzato, è possibile impostare un metodo di test che recupera i dati da alcune origini dati.

Considera un semplice test per sommare numeri diversi. Il codice potrebbe essere simile a:

L'approccio di cui sopra porta a molta ridondanza.

Abbiamo bisogno di un approccio semplice e. Usando il test parametrizzato puoi semplicemente aggiungere un metodo per inserire 10 input di dati e il tuo test verrà eseguito 10 volte automaticamente.

Passaggi per creare un test JUnit con parametri

Il codice seguente mostra un esempio per un test parametrizzato. Verifica il metodo sum () della classe Arithmetic:

Passaggio 1) Crea una classe. In questo esempio, introdurremo due numeri utilizzando il metodo sum (int, int) che restituirà la somma dei numeri dati

Passaggio 2) Creare una classe di test parametrizzata

Spiegazione del codice

  • Riga di codice 11: annota la tua classe di test utilizzando @runWith (Parameterized.class).
  • Riga di codice 13: dichiarazione della variabile "firstNumber" come privata e tipo int.
  • Riga di codice 14: dichiarazione della variabile "secondNumber" come privata e tipo int.
  • Riga di codice 15: dichiarazione della variabile "expectedResult" come privata e tipo int.
  • Riga di codice 16: Dichiarare la variabile "airthematic" come privata e digitare come Airthematic.

@RunWith ( class_name.class ): l' annotazione @RunWith viene utilizzata per specificare il nome della sua classe runner. Se non specifichiamo alcun tipo come parametro, il runtime sceglierà BlockJunit4ClassRunner per impostazione predefinita.

Questa classe è responsabile dell'esecuzione dei test con una nuova istanza di test. È responsabile del richiamo dei metodi del ciclo di vita di JUnit come setup (risorse associate) e smontaggio (risorse di rilascio).

Per parametrizzare è necessario annotare utilizzando @RunWith e passare la classe .class richiesta da testare

Passaggio 3) Creare un costruttore che memorizzi i dati del test. Memorizza 3 variabili

Passaggio 4) Creare un metodo statico che generi e restituisca dati di test.

Riga di codice 32,33: creazione di un array bidimensionale (che fornisce parametri di input per l'aggiunta). Usando il metodo asList convertiamo i dati in un tipo List. Da allora, il tipo di ritorno dell'input del metodo è la raccolta.

Riga di codice 30: utilizzo dell'annotazione @Parameters per creare un set di dati di input per eseguire il nostro test.

Il metodo statico identificato dall'annotazione @Parameters restituisce una raccolta in cui ogni voce nella raccolta rappresenterà i dati di input per un'iterazione del test.

Considera l'elemenent

{1,2,3}

Qui

firstNumber = 1

secondNumber = 2

risultato atteso = 3

Qui ogni elemento dell'array verrà passato al costruttore, uno alla volta poiché la classe viene istanziata più volte.

Passaggio 5) Il codice completo

Spiegazione del codice:

  • Riga di codice 25: utilizzo dell'annotazione @Before per impostare le risorse (Airthematic.class qui). L'annotazione @Before viene utilizzata qui per essere eseguita prima di ogni caso di test. Contiene la precondizione del test.
  • Riga di codice 36: utilizzo dell'annotazione @Test per creare il nostro test.
  • Riga di codice 39: creazione di un'istruzione assert per verificare se la nostra somma è equivalente a ciò che ci aspettavamo.

Passaggio 6) Creare una classe di runner di test per eseguire test parametrizzati:

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: l' esecuzione di casi di test utilizzando JunitCore.runclasses, prenderà il nome della classe di test come parametro (nel nostro esempio stiamo usando Airthematic.class).
  • 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.

Produzione:

Ecco l'output che mostra il test riuscito senza traccia di errore come indicato di seguito:

Vedi il risultato sulla console, che mostra l'aggiunta di due numeri: -

Riepilogo :

Il test parametrizzato consente allo sviluppatore di eseguire lo stesso test più e più volte utilizzando valori diversi.

Annotazioni importanti da utilizzare durante la parametrizzazione

  • @Corri con
  • @Parameters