Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

La classe di test

Quarkus: utilizziamo l'annotation @Test, unità fondamentale in JUnit, per definire un metodo come metodo di test e creiamo una classe di test
Quarkus: utilizziamo l'annotation @Test, unità fondamentale in JUnit, per definire un metodo come metodo di test e creiamo una classe di test
Link copiato negli appunti

Una classe di test

L'unità fondamentale in JUnit è l'annotation @Test, con essa è possibile definire un metodo come metodo di test. Al suo interno in generale si utilizzano asserzioni attraverso la classe Assertions.

Le Annotation

Oltre a @Test esistono molte altre annotation. Ne forniremo una breve descrizione seguita da un esempio di utilizzo rappresentato dalla classe di test mostrata a conclusione dell'articolo.

Annotation Descrizione
@Display Definire il nome di una classe di test diverso dal nome della classe stessa.
@TestInstance Configurare la gestione delle istanze di classi di test. Possiamo avere una singola istanza di classe per eseguire tutti i metodi di test o una nuova istanza per ciascun metodo.
@BeforeEach Eseguire un metodo prima di ogni altro, utile per definire metodi di inizializzazione.
@ParameterizedTest Avere metodi che accettano parametri.
@Tag Assegnare delle label identificative ai metodi. Utile quando si devono selezionare o escludere metodi specifici per il test.
@Timeout Validare il tempo di risposta di un metodo, se esso eccede il timeout configurato il test fallisce.
@RepeatedTest Eseguire un metodo un numero specificato di volte. Particolarmente utile per il test di microservizi al fine di verificare il comportamento del servizio stesso a seguito di ripetute richieste "phantom".
@Order e @TestMethodOrder Orchestrare l'esecuzione dei metodi decidendo l'ordine di esecuzione.
@AfterEach Utile per avere un metodo da eseguire per ultimo.

Il codice della classe

La classe di test che consente di provare tutte le annotazioni presentate è la seguente:

import org.junit.Test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;
import java.util.concurrent.TimeUnit;
@DisplayName(value="JUNIT Jupiter Test Class")
@TestInstance(value= TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class QuarkusTest {
    @BeforeEach
    public void setup(){
        System.out.println("Setup");
    }
    @ParameterizedTest
    @Tag("Tag1")
    @ValueSource(strings = {"value1","value2"})
    public void testWithValues(String value){
        System.out.println(value);
    }
    @ParameterizedTest
    @Tag("Tag1")
    @CsvSource({"Tiger, selvatic","Dog, domestic","Lion, selvatic"})
    public void loadValuesFromCsv(String animalName, String animalType){
        Assertions.assertNotNull(animalName);
        Assertions.assertNotNull(animalType);
    }
    @Test
    @Tag("Tag 2")
    @Timeout(value = 3, unit= TimeUnit.SECONDS)
    public void testTimeoutException(){
        try{
            Thread.sleep(2000);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
    @RepeatedTest(4)
    @DisplayName("Repeat")
    public void repeatTest(RepetitionInfo repetitionInfo){
        System.out.println("Repeat");
    }
    @Test
    @Order(1)
    public void testOrdered1(){
        System.out.println("Test ordered 1");
    }
    @Test
    @Order(2)
    public void testOrdered2(){
        System.out.println("Test ordered 2");
    }
    @AfterEach
    public void cleanUp(){
        System.out.println("Clean");
    }
}

Per eseguire il test da IntelliJ fare click con il tasto destro sul nome della classe e scegliere "Run QuarkusTest":

Test Quarkus

Ti consigliamo anche