JUnit 5 Skýringar með dæmum

JUnit 5 er næsta kynslóð af JUnit. Markmiðið er að skapa nýjan grunn fyrir prófanir verktakahliðar á JVM. Þetta felur í sér að einbeita sér að Java 8 og nýrri útgáfu, auk þess að gera kleift að prófa marga mismunandi stíl.

Þú getur notað bæði Maven og Gradle.

Ef þú ert að nota Maven þarftu að bæta eftirfarandi ósjálfstæði við pom.xml skrá:




org.junit.jupiter
junit-jupiter-api
5.3.1
test


org.junit.jupiter
junit-jupiter-params
5.3.1
test


@JUnit 5 Skýringar

Þú munt taka eftir því að í 5. júní er ein augljósasta breytingin sú að prófflokkar og aðferðir þurfa ekki að vera opinberar lengur.

Nú skulum við fara í gegnum listann yfir algengustu athugasemdir JUnit 5.


@Próf

Þessi skýring sýnir að aðferð er prófunaraðferð. Athugið að þessi skýring tekur enga eiginleika.



import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class JUnit5Test {

@Test
void helloJUnit5() {
assertEquals(10, 5+5);
} }

@ParameterizedTest

Parameterized próf gera það mögulegt að keyra próf oft með mismunandi rökum. Þeim er lýst eins og venjulegum @Test aðferðir en notaðu @ParameterizedTest skýring í staðinn.

Að auki verður þú að lýsa yfir að minnsta kosti einni heimild sem færir rök fyrir hverri ákalli og neyta síðan rökanna í prófunaraðferðinni.

Til dæmis sýnir eftirfarandi dæmi breytupróf sem notar @ValueSource skýring til að tilgreina strengjafylki sem uppsprettu röksemda.


Dæmi:

import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import static org.junit.jupiter.api.Assertions.assertTrue; class JUnit5Test {
@ParameterizedTest
@ValueSource(strings = { 'cali', 'bali', 'dani' })
void endsWithI(String str) {
assertTrue(str.endsWith('i'));
} }

@ Endurtekið próf

JUnit 5 hefur getu til að endurtaka próf í tilteknum sinnum einfaldlega með því að skrifa athugasemd við aðferð með @RepeatedTest og tilgreina heildarfjölda endurtekninga sem óskað er eftir.

Hver ákall endurtekinnar prófs hagar sér eins og framkvæmd venjulegs @Test aðferð.

Þetta er sérstaklega gagnlegt við prófanir á HÍ með Selen.


import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.RepetitionInfo; import org.junit.jupiter.api.TestInfo; import static org.junit.jupiter.api.Assertions.assertEquals; class JUnit5Test {

@RepeatedTest(value = 5, name = '{displayName} {currentRepetition}/{totalRepetitions}')
@DisplayName('RepeatingTest')
void customDisplayName(RepetitionInfo repInfo, TestInfo testInfo) {
int i = 3;
System.out.println(testInfo.getDisplayName() +

'-->' + repInfo.getCurrentRepetition()
);


assertEquals(repInfo.getCurrentRepetition(), i);
} }

Eins og sjá má af niðurstöðu prófsins, þegar i==3, stenst prófið, annars tekst það ekki.

@DisplayName

Prófflokkar og prófunaraðferðir geta lýst yfir sérsniðnum skjáheitum sem verða birt af prófhlaupurum og prófskýrslum.

Dæmi:


import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @DisplayName('DisplayName Demo') class JUnit5Test {
@Test
@DisplayName('Custom test name')
void testWithDisplayName() {
}
@Test
@DisplayName('Print test name')
void printDisplayName(TestInfo testInfo) {
System.out.println(testInfo.getDisplayName());
} }

@BeforeEach

The @BeforeEach skýring merkir að aðgreinda aðferðina eigi að framkvæma fyrir hverja prófunaraðferð, hliðstætt JUnit 4 | | + + _ |

Dæmi:

@Before

Framleiðsla:

import org.junit.jupiter.api.*; class JUnit5Test {
@BeforeEach
void init(TestInfo testInfo) {
String callingTest = testInfo.getTestMethod().get().getName();
System.out.println(callingTest);
}
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
} }

@AfterEach

Þessi skýring táknar að tilgreina ætti aðferðina eftir hverja prófunaraðferð, hliðstæð JUnit 4 | | + + | | Til dæmis, ef prófin þurfa að endurstilla eign eftir hverja prófun, getum við gert athugasemd við aðferð með firstTest 1 secondTest 2 fyrir það verkefni.


@After

Framleiðsla:

@AfterEach

@BeforeAll

Þessi skýring framkvæmir aðferð fyrir öll próf. Þetta er hliðstætt JUnit 4’s import org.junit.jupiter.api.*; class JUnit5Test {
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
}
@AfterEach
void after(TestInfo testInfo) {
String callingTest = testInfo.getTestMethod().get().getName();
System.out.println(callingTest);
} }
. The 1 firstTest 2 secondTest athugasemd er venjulega notuð til að frumstilla ýmislegt fyrir prófin.

Dæmi:

@BeforeClass

Framleiðsla:

@BeforeAll

@Eftir allt

The import org.junit.jupiter.api.*; class JUnit5Test {
@BeforeAll
static void init() {
System.out.println('Only run once before all tests');
}
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
} }
skýring er notuð til að framkvæma athugasemdina aðferðina, aðeins eftir að öll próf hafa verið framkvæmd. Þetta er hliðstætt JUnit 4’s Only run once before all tests 1 2 . Við notum þessa skýringu til að rífa niður eða ljúka öllum ferlum í lok allra prófa.

Dæmi:

@AfterAll

Framleiðsla:

@AfterClass

@Tag

Við getum notað þessa skýringu til að lýsa yfir merki til síunarprófa, annað hvort á bekknum eða aðferðarstigi.

The import org.junit.jupiter.api.*; class JUnit5Test {
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
}
@AfterAll
static void after() {
System.out.println('Only run once after all tests');
} }
skýring er gagnleg þegar við viljum búa til prófapakka með völdum prófum.

Dæmi:

1 2 Only run once after all tests

@ Óvirk

The @Tag athugasemd er notuð til að slökkva eða sleppa prófum á bekknum eða aðferðarstigi. Þetta er hliðstætt JUnit 4’s import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @Tag('smoke') class JUnit5Test {
@Test
@Tag('login')
void validLoginTest() {
}
@Test
@Tag('search')
void searchTest() {
} }
.

Þegar lýst er yfir á bekkjarstigi, eru allir @Disabled aðferðum er sleppt. Þegar við notum @Ignore á aðferðarstiginu er aðeins skýringarmyndin gerð óvirk.

Dæmi:

@test notað til að slökkva á prófflokki:

@Disabled

Dæmi:

@Disabled skýring notuð til að slökkva á prófunaraðferð:

import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @Disabled class DisabledClassDemo {
@Test
void testWillBeSkipped() {
} }