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.
GO TO FULL VERSION