Collegamento del framework JUnit

Per testare il codice Java, abbiamo un ottimo framework chiamato JUnit . Funziona alla grande, è costantemente aggiornato, è molto popolare e ovviamente Intellij IDEA è strettamente integrato con esso.

Ora tutti utilizzano la quinta versione di questo framework - JUnit 5 , sebbene in molti progetti sia ancora possibile trovare la sua quarta versione. Non sono molto diversi, ma daremo comunque un'occhiata all'ultimo. Penso che quando inizierai a scrivere attivamente i test, approverai la mia scelta.

Quindi, come aggiungere JUnit al progetto? Dopo aver imparato Maven sarà facile: basta aggiungere questo codice al tuo pom.xml:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

A proposito, se vuoi che Maven esegua i tuoi test nella fase di compilazione ( fase di test ), devi aggiungere un altro frammento a pom.xml:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Test annotazione

Diciamo che hai una classe che vuoi testare. Qual è il modo migliore per farlo? Cominciamo con qualche esempio, perché è difficile testare una classe astratta :)

Supponiamo di avere una classe Calcolatrice in grado di eseguire 4 operazioni di base: addizione, sottrazione, moltiplicazione e divisione. Scriviamolo:

class Calculator {
    	public int add(int a, int b) {
        	return a+b;
    	}

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

Vogliamo testare i metodi di questa classe. Non si sa mai, in futuro cambiano qualcosa e tutto smetterà di funzionare. Come possiamo scrivere dei test per questo?

Dobbiamo creare un'altra classe. Per fare ciò, di solito prendono lo stesso nome e aggiungono il suffisso Test . Per ogni metodo è necessario aggiungere almeno un metodo di test. Esempio:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

In passato era necessario che il nome del metodo iniziasse con la parola test , ma non è più necessario.

Esempi di test JUnit

Scriviamo alcuni esempi in cui testeremo i metodi della nostra classe CalculatorTest :

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

Questo è l'aspetto di un tipico test JUnit. Dall'interessante: qui viene utilizzato il metodo speciale assertEquals() : confronta i parametri che gli vengono passati, come indicato dalla parola uguale nel suo nome.

Se i parametri passati a assertEquals() non sono uguali, il metodo genererà un'eccezione e il test avrà esito negativo. Questa eccezione non impedirà l'esecuzione di altri test.