Izichasiselo zeJUnit 5 ezinemizekelo

Umanyano 5 sisizukulwana esilandelayo seJUnit. Injongo kukwenza isiseko esisexesheni sovavanyo lwecala lonjiniyela kwiJVM. Oku kubandakanya ukugxila kwiJava 8 nangaphezulu, kunye nokwenza iindlela ezahlukeneyo zovavanyo.

Ungazisebenzisa zombini iMaven kunye neGradle.

Ukuba usebenzisa i-Maven, kuya kufuneka ukongeza ukuxhomekeka koku kulandelayo pom.xml ifayile:




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


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


@JUnit Iinkcazo ezi-5

Uya kuqaphela ukuba kwiJunit 5, olona tshintsho lucacileyo kukuba iiklasi zovavanyo kunye neendlela akusafuneki zibekho esidlangalaleni.

Ngoku, masidlule kuluhlu lwezona zichazi ziqhelekileyo zeJUnit 5.


@Vavanyo

Esi sichazi sichaza ukuba indlela yindlela yovavanyo. Qaphela ukuba esi sichazi asithathi naliphi na uphawu.



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

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

@ParameterisedTest

Uvavanyo lweparameter luyenza ukuba ikwazi ukuqhuba uvavanyo amaxesha amaninzi ngeempikiswano ezahlukeneyo. Babhengezwe njengesiqhelo @Test iindlela kodwa sebenzisa @ParameterizedTest isichaso endaweni yoko.

Ukongeza, kuya kufuneka ubhengeze ubuncinci umthombo omnye oya kuthi ubonelele ngeempikiswano kwisicelo ngasinye emva koko usebenzise iimpikiswano kwindlela yovavanyo.

Umzekelo, lo mzekelo ulandelayo ubonakalisa uvavanyo olwenziweyo olusebenzisa @ValueSource Isichazi sokuchaza uluhlu lomtya njengomthombo wempikiswano.


Umzekelo:

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'));
} }

@RepeatedTest

I-JUnit 5 inesakhono sokuphinda uvavanyo inani elichaziweyo lamaxesha ngokuchaza indlela nge @RepeatedTest kwaye ucacise inani elipheleleyo lokuphindaphinda okunqwenelekayo.

Isicelo ngasinye sovavanyo oluphindaphindiweyo luziphatha njengokuqhutywa kwesiqhelo @Test indlela.

Oku kuluncedo ngakumbi kuvavanyo lwe-UI ngeSelenium.


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);
} }

Njengoko ubona kwiziphumo zovavanyo, xa i==3, uvavanyo ludlula, kungenjalo iyasilela.

@Igama elibonisiwe

Iiklasi zovavanyo kunye neendlela zovavanyo zinokuchaza amagama abonisa isiko aya kuboniswa ngabagijimi bovavanyo kunye neengxelo zovavanyo.

Umzekelo:


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

I @BeforeEach Isichazi-magama sichaza ukuba indlela echaziweyo kufuneka yenziwe phambi kwendlela nganye yovavanyo, efana neJUnit 4's @Before.

Umzekelo:

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);
} }

Iziphumo:

firstTest 1 secondTest 2

@AfterEach

Esi sichazi sichaza ukuba indlela echaziweyo kufuneka yenziwe emva kovavanyo lwendlela nganye, ehambelana neJUnit 4's @After. Umzekelo, ukuba iimvavanyo zifuna ukuseta kwakhona ipropathi emva kovavanyo ngalunye, sinokuthi sichaze indlela nge @AfterEach kuloo msebenzi.


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);
} }

Iziphumo:

1 firstTest 2 secondTest

@BeforeAll

Esi sichazi sisebenzisa indlela phambi kwazo zonke iimvavanyo. Oku kuthelekiswa neJUnit 4's @BeforeClass. I @BeforeAll Isichaso sisetyenziselwa ukwenza izinto ezahlukeneyo zovavanyo.

Umzekelo:

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);
} }

Iziphumo:

Only run once before all tests 1 2

@Emveni kwakho konke

I @AfterAll Isichazi-magama sisetyenziselwa ukwenza indlela echaziweyo, kuphela emva kokuba kwenziwe zonke iimvavanyo. Oku kuthelekiswa neJUnit 4's @AfterClass . Sisebenzisa esi sichazi-magama ukudiliza okanye ukuphelisa zonke iinkqubo ekupheleni kwazo zonke iimvavanyo.

Umzekelo:

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');
} }

Iziphumo:

1 2 Only run once after all tests

@Tag

Singasisebenzisa esi sichazi ukubhengeza iithegi zovavanyo lokucoca, nokuba kukwinqanaba okanye kwinqanaba lendlela.

I @Tag Isichazi-magama siluncedo xa sifuna ukwenza ipakethe yovavanyo kunye neemvavanyo ezikhethiweyo.

Umzekelo:

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() {
} }

@Khubaza

I @Disabled Isichazi-magama sisetyenziselwa ukukhubaza okanye ukweqa iimvavanyo kwinqanaba leklasi okanye lendlela. Oku kuthelekiswa neJUnit 4's @Ignore.

Xa kubhengezwe kwinqanaba leklasi, zonke @test iindlela zitsibiwe. Xa sisebenzisa @Disabled kwinqanaba lendlela, kuphela yindlela echaziweyo ekhubazekileyo.

Umzekelo:

@Disabled usetyenziselwa ukukhubaza iklasi yovavanyo:

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

Umzekelo:

@Disabled Isichazi esetyenziselwa ukukhubaza indlela yovavanyo:

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