जुनीत ५ 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);
} }
JUnit 5 में एक विधि को एनोटेट करके परीक्षण की एक निर्दिष्ट संख्या को दोहराने की क्षमता है @Test
और वांछितों की कुल संख्या को निर्दिष्ट करना।
दोहराया परीक्षण का प्रत्येक आह्वान एक नियमित निष्पादन की तरह व्यवहार करता है। _ + _ | तरीका।
यह सेलेनियम के साथ यूआई परीक्षण में विशेष रूप से उपयोगी है।
@ParameterizedTest
जैसा कि आप परीक्षण के परिणाम से देख सकते हैं, जब @ValueSource
, परीक्षण पास होता है, अन्यथा यह विफल हो जाता है।
परीक्षण कक्षाएं और परीक्षण विधियां कस्टम प्रदर्शन नामों की घोषणा कर सकती हैं जिन्हें परीक्षण धावक और परीक्षण रिपोर्ट द्वारा प्रदर्शित किया जाएगा।
उदाहरण:
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
एनोटेशन बताता है कि एनोटेट विधि को प्रत्येक परीक्षण विधि से पहले निष्पादित किया जाना चाहिए, जो JUnit 4 के अनुरूप है।
उदाहरण:
@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);
} }
यह एनोटेशन निरूपित करता है कि एनोटेट विधि को प्रत्येक परीक्षण विधि के बाद निष्पादित किया जाना चाहिए, जो JUnit 4-|-_ + _ | उदाहरण के लिए, यदि परीक्षणों में प्रत्येक परीक्षण के बाद एक संपत्ति को रीसेट करने की आवश्यकता होती है, तो हम एक विधि की व्याख्या कर सकते हैं 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 {
@Test
@DisplayName('Custom test name')
void testWithDisplayName() {
}
@Test
@DisplayName('Print test name')
void printDisplayName(TestInfo testInfo) {
System.out.println(testInfo.getDisplayName());
} }
आउटपुट:
@BeforeEach
यह एनोटेशन सभी परीक्षणों से पहले एक विधि निष्पादित करता है। यह JUnit 4 के समरूप है। _ + _ | द @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);
} }
आउटपुट:
firstTest 1 secondTest 2
द @After
एनोटेशन का उपयोग एनोटेट विधि को निष्पादित करने के लिए किया जाता है, केवल सभी परीक्षणों को निष्पादित करने के बाद। यह JUnit 4 के समरूप है। _ + _ | । हम सभी परीक्षणों को समाप्त करने या सभी प्रक्रियाओं को समाप्त करने के लिए इस एनोटेशन का उपयोग करते हैं।
उदाहरण:
@AfterEach
आउटपुट:
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
एनोटेशन का उपयोग क्लास या मेथड लेवल पर टेस्ट को डिसेबल या स्किप करने के लिए किया जाता है। यह JUnit 4 के समरूप है। _ + _ |
जब कक्षा स्तर पर घोषित किया जाता है, सभी 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);
} } 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