Introduzione a JUnit

Introduzione al Testing in Java

Maria Milusheva

Senior Software Engineer

Dati rapidi

  • JUnit è la libreria di testing Java più diffusa
  • È ben mantenuta e aggiornata regolarmente

Immagine del logo JUnit 5.

Introduzione al Testing in Java

Scrivere un test JUnit

Scriviamo un test per il metodo addTwoNumbers():

public int addTwoNumbers(int a, int b) {
    return a + b;
}
Introduzione al Testing in Java

Annotazione JUnit @Test

  • Installa JUnit con un IDE o con build tool (esempio nella citazione)

  • Ogni test deve avere l'annotazione @Test:

import org.junit.jupiter.api.Test;

@Test 
// Qui andrà il metodo di test

Annotazione - metadato speciale che indica come il metodo deve essere gestito da compilatori e framework. Le annotazioni iniziano con @

1 https://www.jetbrains.com/help/idea/junit.html
Introduzione al Testing in Java

Struttura di un test JUnit

import org.junit.jupiter.api.Test;

@Test 

void testAddTwoNumbers() {
// Arrange - Given int num1 = 2; int num2 = 2;
// Act - When int actual = addTwoNumbers(num1, num2);
// Assert - Then assertEquals(4, actual); }
Introduzione al Testing in Java

Istruzioni assert

  • Confronto rapido tra risultati ottenuti e attesi
  • Se atteso e ottenuto non coincidono, il test fallisce
  • Aiuta a trovare bug ed errori velocemente

Grafica che rappresenta un'istruzione assert

Introduzione al Testing in Java

Esiti del test

Considera l'asserzione:

assertEquals(4, actual); // Va a buon fine se actual == 4

Se passa, produce il messaggio Test passed

Se i valori non sono uguali, es. actual = 5:

org.opentest4j.AssertionFailedError: expected: <4> but was: <5>

Ricorda l'ordine degli argomenti! In JUnit il primo è quello atteso.

Introduzione al Testing in Java

Test aggiuntivo per overflow

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
Introduzione al Testing in Java

Note su JUnit e i test

  • Un test può avere più asserzioni
  • Tutte devono passare perché il test passi
  • Possiamo importare tutte le asserzioni con:
import org.junit.jupiter.api.Assertions.*;
Introduzione al Testing in Java

Altre note

  • Di seguito c'è uno strumento personalizzato Datacamp, non serve nell'IDE:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method permette di usare method come method, senza scrivere package.Class.method
import static java.lang.Math.max;

...

max(3,5); // Invece di Math.max(3, 5)
Introduzione al Testing in Java

Ayo berlatih!

Introduzione al Testing in Java

Preparing Video For Download...