JUnit 5 @Test Annotation

1. Panoramica

In questo articolo, faremo una rapida revisione dell'annotazione @Test di JUnit . Questa annotazione fornisce un potente strumento per eseguire test di unità e regressione.

2. Configurazione Maven

Per utilizzare l'ultima versione di JUnit 5, dovremo aggiungere la seguente dipendenza Maven:

 org.junit.jupiter junit-jupiter-engine 5.1.0 test 

Usiamo l' ambito del test perché non vogliamo che Maven includa questa dipendenza nella nostra build finale.

Poiché il plug-in infallibile non supporta ancora nativamente JUnit 5, dovremo anche aggiungere un provider , che indichi a Maven dove trovare i nostri test:

 maven-surefire-plugin 2.19.1   org.junit.platform junit-platform-surefire-provider 1.0.2   

Nella nostra configurazione, useremo surefire 2.19.1 perché, al momento della scrittura, la versione 2.20.x non è compatibile con junit-platform-surefire-provider .

3. Metodo in prova

Prima di tutto, creiamo un metodo semplice che useremo nei nostri scenari di test per mostrare le capacità dell'annotazione @Test :

public boolean isNumberEven(Integer number) { return number % 2 == 0; }

Questo metodo dovrebbe restituire true se l'argomento passato è un numero pari e false in caso contrario. Ora, controlliamo se funziona come dovrebbe.

4. Testare il metodo

Per il nostro esempio, vogliamo controllare specificamente due scenari:

  • quando viene fornito un numero pari, il metodo dovrebbe restituire true
  • quando viene fornito un numero dispari, il metodo dovrebbe restituire false

Ciò significa che il codice di implementazione chiamerà il nostro metodo isNumberEven con parametri diversi e verificherà che il risultato sia quello che ci aspettiamo.

Affinché i test vengano riconosciuti come tali, aggiungeremo l' annotazione @Test . Possiamo averne quante ne vogliamo in una classe, ma è una buona pratica mettere insieme solo quelle correlate. Si noti inoltre che un test non deve essere privato, né può restituire un valore, altrimenti verrà semplicemente ignorato.

Date queste considerazioni, scriviamo i nostri metodi di test:

@Test void givenEvenNumber_whenCheckingIsNumberEven_thenTrue() { boolean result = bean.isNumberEven(8); Assertions.assertTrue(result); } @Test void givenOddNumber_whenCheckingIsNumberEven_thenFalse() { boolean result = bean.isNumberEven(3); Assertions.assertFalse(result); }

Se ora eseguiamo una build Maven, il plugin infallibile passerà attraverso tutti i metodi annotati nelle classi poste sotto src / test / java e li eseguirà , causando il fallimento della build se si verificano errori di test .

Se vieni da JUnit 4, tieni presente che in questa versione l'annotazione non accetta alcun parametro. Per verificare un timeout o un'eccezione generata, utilizzeremmo invece le asserzioni:

@Test void givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis() { Assertions.assertTimeout(Duration.ofMillis(10), () -> bean.isNumberEven(3)); } @Test void givenNull_whenCheckingIsNumberEven_thenNullPointerException() { Assertions.assertThrows(NullPointerException.class, () -> bean.isNumberEven(null)); }

5. conclusione

In questo breve tutorial, abbiamo mostrato come implementare ed eseguire un semplice test JUnit con l' annotazione @Test .

Maggiori informazioni sul framework JUnit possono essere trovate in questo post che fornisce un'introduzione generale.

Tutto il codice utilizzato negli esempi è disponibile nel progetto GitHub.