Wprowadzenie do JUnit

Wprowadzenie do testowania w Javie

Maria Milusheva

Senior Software Engineer

Kilka faktów

  • JUnit to najpopularniejsza biblioteka do testowania w Javie
  • Jest aktywnie rozwijana i regularnie aktualizowana

Logo JUnit 5.

Wprowadzenie do testowania w Javie

Pisanie testu JUnit

Napiszemy test dla metody addTwoNumbers():

public int addTwoNumbers(int a, int b) {
    return a + b;
}
Wprowadzenie do testowania w Javie

Adnotacja @Test w JUnit

  • JUnit instaluje się za pomocą IDE lub narzędzi budowania (przykład w cytowaniu)

  • Każdy test musi mieć adnotację @Test:

import org.junit.jupiter.api.Test;

@Test 
// Tutaj znajdzie się metoda testowa

Adnotacja – specjalne metadane wskazujące, jak metoda ma być obsługiwana przez kompilatory i frameworki. Adnotacje zaczynają się od @

1 https://www.jetbrains.com/help/idea/junit.html
Wprowadzenie do testowania w Javie

Struktura testu 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); }
Wprowadzenie do testowania w Javie

Instrukcje assert

  • Szybki sposób porównania wyników rzeczywistych z oczekiwanymi
  • Jeśli wyniki się różnią, test nie przechodzi
  • Pomagają szybko wykrywać błędy

Grafika przedstawiająca instrukcję assert

Wprowadzenie do testowania w Javie

Wyniki testów

Rozważmy asercję:

assertEquals(4, actual); // Powiedzie się, jeśli actual == 4

Przy powodzeniu pojawi się komunikat Test passed

Jeśli wartości nie są równe, np. actual = 5:

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

Uwaga na kolejność argumentów! W JUnit pierwszy argument to wartość oczekiwana.

Wprowadzenie do testowania w Javie

Dodatkowy test dla przepełnienia

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
Wprowadzenie do testowania w Javie

Uwagi o JUnit i testowaniu

  • W jednym teście może być wiele asercji
  • Wszystkie asercje muszą się powieść, aby test przeszedł
  • Wszystkie asercje można zaimportować za pomocą:
import org.junit.jupiter.api.Assertions.*;
Wprowadzenie do testowania w Javie

Dodatkowe uwagi

  • Poniższe narzędzie jest własnym narzędziem DataCamp, niepotrzebnym w IDE:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method pozwala używać method bez podawania package.Class.method
import static java.lang.Math.max;

...

max(3,5); // Zamiast Math.max(3, 5)
Wprowadzenie do testowania w Javie

Czas na praktykę!

Wprowadzenie do testowania w Javie

Preparing Video For Download...