Skip to content

Latest commit

 

History

History
85 lines (66 loc) · 2.1 KB

testing.md

File metadata and controls

85 lines (66 loc) · 2.1 KB

Instalacja zależności

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.10.2</version>
  <scope>test</scope>
</dependency>

Najbardziej prosty test

Główna idea testowania: wywołać przykładowo jakąś funkcję która zazwyczaj coś zwraca i sprawdzić czy zwraca to czego sie spodziewamy.

Testy dodajemy do folderu /src/tests/java gdzie InteliJ IDEA sie domyśli, że dana klasa to test i pozwoli jednym przyciskiem je wykonać.

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class TestTest {
    @Test
    public void obvious() {
        Assertions.assertEquals(1, 1);
    }
}

Praktyczniejszy przykład

Powiedzmy, że mamy w naszej aplikacji taką klasę i chcemy ją wytestować:

package org.example;

public class Post {
    private String title;

    public void setTitle(String title) {
        if (title.length() < 5) {
            throw new RuntimeException("Too short title");
        }

        this.title = title;
    }

    public String getTitle() {
        return title;
    }
}

Najczęściej będziemy chcieli czy funkcja zwraca coś/wyrzuca wyjątek (albo sprawdzić czy NIE zwraca/wyrzuca wyjątek używając wariantów metod z not w nazwie). By test był wiarygodny testujemy wiele scenariuszy - z podanymi błędnymi danymi jak i poprawnymi.

import org.example.Post;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class PostTest {
    @Test
    void tooShortTitle() {
        Post post = new Post();
        Assertions.assertThrows(Throwable.class, () -> post.setTitle("123"));
    }

    @Test
    void validTitle() {
        Post post = new Post();
        Assertions.assertDoesNotThrow(() -> post.setTitle("123456"));
    }

    @Test
    void checkGetter() {
        Post post = new Post();
        String expected = "Hello World.";
        post.setTitle(expected);

        Assertions.assertEquals(post.getTitle(), expected);
        Assertions.assertEquals(post.getTitle().length(), expected.length());
    }
}