Úvod do JUnit

Úvod do testování v Javě

Maria Milusheva

Senior Software Engineer

Rychlá fakta

  • JUnit je nejrozšířenější testovací knihovna pro Javu
  • Je aktivně udržována a průběžně aktualizována

Logo JUnit 5.

Úvod do testování v Javě

Psaní testu v JUnit

Napišme test pro metodu addTwoNumbers():

public int addTwoNumbers(int a, int b) {
    return a + b;
}
Úvod do testování v Javě

Anotace @Test v JUnit

  • JUnit nainstalujte pomocí IDE nebo nástrojů pro sestavení (příklad viz citace)

  • Každý test musí mít anotaci @Test:

import org.junit.jupiter.api.Test;

@Test 
// Zde bude testovací metoda

Anotace – speciální metadata určující, jak má být metoda zpracována kompilátory a frameworky. Anotace začínají znakem @

1 https://www.jetbrains.com/help/idea/junit.html
Úvod do testování v Javě

Struktura testu v 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); }
Úvod do testování v Javě

Příkazy assert

  • Rychlý způsob porovnání skutečných výsledků s očekávanými
  • Pokud se neshodují, test selže
  • Pomáhají rychle odhalit chyby

Grafika znázorňující příkaz assert

Úvod do testování v Javě

Výsledky testů

Uvažujme toto tvrzení:

assertEquals(4, actual); // Uspěje, pokud actual == 4

Při úspěchu se zobrazí zpráva Test passed

Pokud si hodnoty nejsou rovny, např. actual = 5:

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

Pozor na pořadí argumentů! V JUnit je první argument ten očekávaný.

Úvod do testování v Javě

Dodatečný test pro přetečení

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
Úvod do testování v Javě

Poznámky k JUnit a testování

  • Jeden test může obsahovat více tvrzení
  • Všechna tvrzení musí projít, aby test uspěl
  • Všechna tvrzení lze importovat takto:
import org.junit.jupiter.api.Assertions.*;
Úvod do testování v Javě

Další poznámky

  • Následující nástroj je vlastní nástroj DataCamp, v IDE není potřeba:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method umožňuje používat method přímo jako method, bez uvádění package.Class.method
import static java.lang.Math.max;

...

max(3,5); // Místo Math.max(3, 5)
Úvod do testování v Javě

Pojďme si to procvičit!

Úvod do testování v Javě

Preparing Video For Download...