5 جونټ د JUnit راتلونکی نسل دی. هدف په JVM کې د پراختیا کونکي اړخ ازموینې لپاره وروستي اساس رامینځته کول دي. پدې کې جاوا 8 او پورته تمرکز کول شامل دي ، په بیله بیا د ازموینې ډیری مختلف سټایلونه وړول.
تاسو کولی شئ دواړه ماون او ګریډل وکاروئ.
که تاسو ماوین کاروئ ، نو تاسو اړتیا لرئ خپل | _ _ + _ | ته لاندې انحصار اضافه کړئ دوتنه:
pom.xml
تاسو به وګورئ چې په 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
| import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @DisplayName('DisplayName Demo') class JUnit5Test {
خبرتیا په ګوته کوي چې تشریح شوې میتود باید د هرې ازموینې میتود دمخه اجرا شي ، د JUnit 4's
@Test
@DisplayName('Custom test name')
void testWithDisplayName() {
}
@Test
@DisplayName('Print test name')
void printDisplayName(TestInfo testInfo) {
System.out.println(testInfo.getDisplayName());
} } @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);
} }
دا یادونه په ګوته کوي چې تشریح شوې میتود باید د هر ازمونې میتود وروسته اجرا شي ، د JUnit 4's firstTest 1 secondTest 2
سره ورته وي. د مثال په توګه ، که ازموینې د هرې ازموینې وروسته ملکیت بیا تنظیم کولو ته اړتیا ولري ، موږ کولی شو د | _ _ + _ | سره یو میتود تشریح کړو د دې کار لپاره.
@After
محصول:
@AfterEach
دا یادونه د ټولو ازموینو دمخه یو میتود اجرا کوي. دا د 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 {
نوټټ د تشریح شوي میتود پلي کولو لپاره کارول کیږي ، یوازې وروسته له هغه چې ټول ټیسټونه اعدام شي. دا د JUnit 4's
@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);
} } 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() {
} }