Skip to content

Framework JUnit

Damian Muszyński edited this page Apr 19, 2021 · 1 revision

Framework JUnit

JUnit jest to open source'owy szkielet służący do pisania powtarzalnych testów jednostkowych, czyli testów weryfikujących pojedyncze elementy oprogramowania, w wypadku Javy – klas, bądź metod. Weryfikacja ta w większości przypadków polega na porównywaniu wyniku testu z jakimś oczekiwanym wynikiem.

Cechy frameworka testowego JUnit:

  • Obsługuje adnotacje
  • Jest obecnie obsługiwany w wielu językach.
  • Umożliwia wiele sposobów uruchamiania testów,
  • Pozwala na oddzielanie testów od kodu produkcyjnego,
  • Pozwala na tworzenie przypadków i scenariuszy testowych,
  • Nie obsługuje jednoczesnego uruchamiania testów równoległych.
  • Umożliwia tworzenie raportów dzięki wygenerowanym plikom XML.

Podstawowe adnotacje w JUnit:

Adnotacja Opis
@Test Oznacza, że ​​metoda jest metodą testową. W przeciwieństwie do adnotacji @Test JUnit 4, adnotacja ta nie deklaruje żadnych atrybutów, ponieważ rozszerzenia testów w JUnit Jupiter działają w oparciu o własne dedykowane adnotacje. Takie metody są dziedziczone, chyba że zostaną nadpisane.
@BeforeEach Oznacza, że ​​metodę z adnotacjami należy wykonać przed każdą metodą z adnotacją @Test, @RepeatedTest, @ParameterizedTest lub @TestFactory w bieżącej klasie; analogicznie do @Before JUnit 4. Takie metody są dziedziczone, chyba że zostaną nadpisane.
@AfterEach Oznacza, że ​​metoda z adnotacjami powinna być wykonywana po każdej metodzie z adnotacją @RepeatedTest @Test, @RepeatedTest, @ParameterizedTest lub @TestFactory w bieżącej klasie; analogicznie do JUnit 4 @After. Takie metody są dziedziczone, chyba że zostaną nadpisane.
@BeforeAll Oznacza, że ​​metoda z adnotacjami powinna zostać wykonana przed wszystkimi: @RepeatedTest @Test , @RepeatedTest, @ParameterizedTest i @TestFactory w bieżącej klasie; analogicznie do @BeforeClass JUnit 4. Takie metody są dziedziczone (chyba że są ukryte lub przesłonięte ) i muszą być static (chyba że używany jest cykl życia instancji testowej "na klasę").
@AfterAll Oznacza, że ​​metoda z adnotacjami powinna zostać wykonana po wszystkich @RepeatedTest @Test , @RepeatedTest, @ParameterizedTest i @TestFactory w bieżącej klasie; analogiczny do JUnit 4 @AfterClass . Takie metody są dziedziczone (chyba że są ukryte lub przesłonięte) i muszą być static (chyba że używany jest cykl życia instancji testowej "na klasę").

Przykładowy prosty zestaw testów może wyglądać następująco:

import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import static org.junit.jupiter.api.Assertions.assertEquals;

class UnitConverterTest {
    @Test
    void shouldConvertZeroKilogramValue() {
        Pound pounds = new Kilogram(BigDecimal.ZERO).toPounds();
        assertEquals(BigDecimal.ZERO.setScale(4), pounds.value);
    }

    @Test
    void shouldConvertZeroPoundValue() {
        Kilogram kilograms = new Pound(BigDecimal.ZERO).toKilograms();
        assertEquals(BigDecimal.ZERO.setScale(4), kilograms.value);
    }

    @Test
    void shouldConvert1Pound() {
        assertEquals(new BigDecimal("0.4536"), new Pound(BigDecimal.ONE).toKilograms().value);
    }

    @Test
    void shouldConvert1Kilogram() {
        assertEquals(new BigDecimal("2.2046"), new Kilogram(BigDecimal.ONE).toPounds().value);
    }
}
Clone this wiki locally