د مثالونو سره JUnit 5 تشریحات

5 جونټ د JUnit راتلونکی نسل دی. هدف په JVM کې د پراختیا کونکي اړخ ازموینې لپاره وروستي اساس رامینځته کول دي. پدې کې جاوا 8 او پورته تمرکز کول شامل دي ، په بیله بیا د ازموینې ډیری مختلف سټایلونه وړول.

تاسو کولی شئ دواړه ماون او ګریډل وکاروئ.

که تاسو ماوین کاروئ ، نو تاسو اړتیا لرئ خپل | _ _ + _ | ته لاندې انحصار اضافه کړئ دوتنه:


pom.xml

JUnit 5 تشریحات

تاسو به وګورئ چې په 5 جون کې ، یو له ښکاره بدلونونو څخه دا دی چې د ازموینې ټولګي او میتودونه نور باید عامه نه وي.

اوس ، راځئ د خورا عام JUnit 5 تشریحاتو لیست ته لاړ شو.


@ ټیسټ

دا یادونه په ګوته کوي چې میتود د ازموینې میتود دی. په یاد ولرئ چې دا یادونه کومه خاصیت نلري.



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


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

@ پارامیټرائزډ ټیسټ

پارامیټرایز شوي ازموینې دا د مختلف دلیلونو سره ازموینې څو ځله پرمخ وړو ته لاره هواره کړه. دوی د معمول په څیر اعلان شوي import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; class JUnit5Test {

@Test
void helloJUnit5() {
assertEquals(10, 5+5);
} }
میتودونه مګر | @Test وکاروئ پرځای یې تشریح.

سربیره پردې ، تاسو باید لږترلږه یوه سرچینه اعلان کړئ چې د هرې غوښتنې لپاره دلیلونه چمتو کړي او بیا به د ازموینې میتود کې دلیلونه مصرف کړئ.

د مثال په توګه ، لاندې مثال د پیرامیټریک شوي ازموینې ښودنه کوي چې د @ParameterizedTest کاروي د دلیلونو سرچینې په توګه د سټینګ ارې مشخص کولو لپاره وینا.


مثال:

@ValueSource

@ ریپټینټیسټ

جونیټ 5 د دې وړتیا لري چې د 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 اجرا کولو په څیر چلند کوي میتود.

دا په خاصه توګه د سیلینیم سره د UI ازموینې کې ګټور دی.


@Test

لکه څنګه چې تاسو کولی شئ د آزموینې پایله وګورئ ، کله چې 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);
} }
، ازموینه تیریږي ، که نه نو دا ناکاميږي.

@نوم څرګند کړه

د ازمونې ټولګي او د ازموینې میتودونه کولی شي د دودیز نمایش نومونه اعلان کړي چې د ازموینې ځغلونکو او ازموینې راپورونو لخوا به ښودل شي.

مثال:


i==3

BeforeEach

| 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());
} }
خبرتیا په ګوته کوي چې تشریح شوې میتود باید د هرې ازموینې میتود دمخه اجرا شي ، د JUnit 4's @BeforeEach سره ورته وي.

مثال:

@Before

محصول:

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

دا یادونه په ګوته کوي چې تشریح شوې میتود باید د هر ازمونې میتود وروسته اجرا شي ، د JUnit 4's firstTest 1 secondTest 2 سره ورته وي. د مثال په توګه ، که ازموینې د هرې ازموینې وروسته ملکیت بیا تنظیم کولو ته اړتیا ولري ، موږ کولی شو د | _ _ + _ | سره یو میتود تشریح کړو د دې کار لپاره.


@After

محصول:

@AfterEach

BeforeAll

دا یادونه د ټولو ازموینو دمخه یو میتود اجرا کوي. دا د 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);
} }
سره ورته دی. | 1 firstTest 2 secondTest نوشت عموما د ازموینو لپاره مختلف شیان پیل کولو لپاره کارول کیږي.

مثال:

@BeforeClass

محصول:

@BeforeAll

@وروسته له هر څه

| 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);
} }
نوټټ د تشریح شوي میتود پلي کولو لپاره کارول کیږي ، یوازې وروسته له هغه چې ټول ټیسټونه اعدام شي. دا د JUnit 4's Only run once before all tests 1 2 سره ورته دی . موږ دا تشریح د ټولو ازموینو په پای کې ټولې پروسې له مینځه وړو یا پای ته رسولو لپاره کاروو.

مثال:

@AfterAll

محصول:

@AfterClass

@ ټګ

موږ کولی شو دا تشریح د فلټر کولو ازموینو لپاره د علامو اعلانولو لپاره وکاروو ، یا په ټولګی یا د میتود په کچه.

| 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');
} }
تشریح ګټور دی کله چې موږ غواړو د غوره ازموینو سره د ازموینې کڅوړه جوړه کړو.

مثال:

1 2 Only run once after all tests

@ ناتوان شوی

| @Tag تشریح د ټولګي یا میتود په کچه کې د ازموینو د ناکارولو یا پریښودو لپاره کارول کیږي. دا د 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() {
} }
سره ورته دی.

کله چې د ټولګي په کچه اعلان شي ، ټول @Disabled میتودونه پرېښودل شوي کله چې موږ @Ignore وکاروو د میتود په کچه ، یوازې اعلان شوې میتود ناتوان شوی.

مثال:

@test د ازموینې ټولګي غیر فعالولو لپاره کارول شوی

@Disabled

مثال:

@Disabled تشخیص د ازمونې میتود ناتوانولو لپاره کارول کیږي:

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