Java >> Java tutorial >  >> Tag >> static

@BeforeAll og @AfterAll i ikke-statiske metoder

1. Oversigt

I dette korte selvstudie skal vi implementere ikke-statiske metoder med @BeforeAll og @AfterAll annoteringer tilgængelige i Junit5 .

2. @BeforeAll og @AfterAll i ikke-statiske metoder

Under enhedstestning kan vi lejlighedsvis bruge @BeforeAll og @AfterAll i ikke-statiske opsætnings- og nedtagningsmetoder - for eksempel i en @Nested testklasse eller som standardgrænseflademetoder.

Lad os oprette en testklasse med @BeforeAll og @AfterAll metoder som ikke-statiske:

public class BeforeAndAfterAnnotationsUnitTest {

    String input;
    Long result;

    @BeforeAll
    public void setup() {
        input = "77";
    }

    @AfterAll
    public void teardown() {
        input = null;
        result = null;
    }

    @Test
    public void whenConvertStringToLong_thenResultShouldBeLong() {
        result = Long.valueOf(input);
        Assertions.assertEquals(77l, result);
    }​
}

Hvis vi kører ovenstående kode, vil den give en undtagelse:

org.junit.platform.commons.JUnitException:  ...

Lad os nu se, hvordan vi kan undgå denne situation.

3. @TestInstance Anmærkning

Vi bruger @TestInstance anmærkning for at konfigurere livscyklussen for en test. Hvis vi ikke erklærer det på vores testklasse, vil livscyklustilstanden være PER_METHOD som standard.for at forhindre vores testklasse i at kaste en JUnitException, vi skal annotere det med @TestInstance(TestInstance. Livscyklus.PER_CLASS) .

Lad os lave vores testklasse om og tilføje @TestInstance(TestInstance.). Livscyklus.PER_CLASS):

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class BeforeAndAfterAnnotationsUnitTest {

    String input;
    Long result;

    @BeforeAll
    public void setup() {
        input = "77";
    }

    @AfterAll
    public void teardown() {
        input = null;
        result = null;
    }

    @Test
    public void whenConvertStringToLong_thenResultShouldBeLong() {
        result = Long.valueOf(input);
        Assertions.assertEquals(77l, result);
    }
}

I dette tilfælde kører vores test med succes.

4. Konklusion

I denne korte artikel har vi lært, hvordan man bruger @BeforeAll og @AfterAll i ikke-statiske metoder. Først startede vi med et simpelt ikke-statisk eksempel for at vise, hvad der sker, hvis vi ikke inkluderer @TestInstance anmærkning. Derefter annoterede vi vores test med @TestInstance(TestInstance.Lifecycle.PER_CLASS) for at forhindre udsendelse af en JUnitException .

Som altid er implementeringen af ​​alle disse eksempler slut på GitHub.


Java tag