जुनीट 5 जुनीट की अगली पीढ़ी है। लक्ष्य JVM पर डेवलपर-साइड परीक्षण के लिए अप-टू-डेट आधार तैयार करना है। इसमें जावा 8 और इसके बाद के संस्करण पर ध्यान केंद्रित करना, साथ ही परीक्षण की कई अलग-अलग शैलियों को सक्षम करना शामिल है।
आप मावेन और ग्रैडल दोनों का उपयोग कर सकते हैं।
यदि आप मावेन का उपयोग कर रहे हैं, तो आपको अपने pom.xml
में निम्नलिखित निर्भरता को जोड़ना होगा फ़ाइल:
<निर्भरता> <निर्भरता> org.junit.jupiter junit-jupiter-api <संस्करण>5.3.1संस्करण> <स्कोप>परीक्षा निर्भरता> <निर्भरता> org.junit.jupiter junit-jupiter-params <संस्करण>5.3.1संस्करण> <स्कोप>परीक्षास्कोप> निर्भरता>निर्भरता>
@JUnit 5 एनोटेशन
आप देखेंगे कि जूनिट 5 में, सबसे स्पष्ट परिवर्तनों में से एक यह है कि परीक्षण कक्षाओं और विधियों को अब सार्वजनिक करने की आवश्यकता नहीं है।
अब, सबसे आम JUnit 5 एनोटेशन की सूची पर चलते हैं।
@Test
यह एनोटेशन दर्शाता है कि एक विधि एक परीक्षण विधि है। ध्यान दें कि इस एनोटेशन में कोई विशेषता नहीं है।
import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.assertEquals;class JUnit5Test {@Test void helloJUnit5() { assertEquals(10, 5+5); }}
@ParameterizedTest
पैरामीटरयुक्त परीक्षण विभिन्न तर्कों के साथ कई बार परीक्षण चलाना संभव बनाते हैं। उन्हें नियमित @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 (स्ट्रिंग्स ={"कैली", "बाली", "दानी"}) शून्य समाप्त होता है (स्ट्रिंग स्ट्र) { assertTrue (str.endsWith ("i")); }}
@RepeatedTest
JUnit 5 में केवल @RepeatedTest
के साथ एक विधि की व्याख्या करके एक निश्चित संख्या में परीक्षण दोहराने की क्षमता है और वांछित दोहराव की कुल संख्या निर्दिष्ट करना।
दोहराए गए परीक्षण का प्रत्येक आह्वान एक नियमित @Test
. के निष्पादन की तरह व्यवहार करता है विधि।
यह सेलेनियम के साथ UI परीक्षण में विशेष रूप से उपयोगी है।
आयात करें आयात स्थिर 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
, परीक्षण पास हो जाता है, अन्यथा यह विफल हो जाता है।
@DisplayName
परीक्षण कक्षाएं और परीक्षण विधियां कस्टम प्रदर्शन नाम घोषित कर सकती हैं जो परीक्षण धावक और परीक्षण रिपोर्ट द्वारा प्रदर्शित किए जाएंगे।
उदाहरण:
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 ("कस्टम परीक्षण नाम") शून्य परीक्षणविथडिस्प्लेनाम () { } @ टेस्ट @ डिस्प्लेनाम ("प्रिंट परीक्षण नाम") शून्य प्रिंटडिस्प्लेनाम (टेस्टइन्फो टेस्टइन्फो) { System.out.println (testInfo.getDisplayName ()); }}
@BeforeEach
@प्रत्येक से पहले
एनोटेशन इंगित करता है कि एनोटेट विधि को प्रत्येक परीक्षण विधि से पहले निष्पादित किया जाना चाहिए, जो कि जुनीट 4 के @Before
के समान है। ।
उदाहरण:
आयात करें। System.out.println (कॉलिंगटेस्ट); } @Test void firstTest() { System.out.println(1); } @टेस्ट शून्य सेकेंडटेस्ट () { System.out.println(2); }}
आउटपुट:
firstTest1secondTest2
@afterEach
यह एनोटेशन दर्शाता है कि एनोटेट विधि को प्रत्येक परीक्षण विधि के बाद निष्पादित किया जाना चाहिए, जो कि JUnit 4 के @after
के समान है। . उदाहरण के लिए, यदि परीक्षणों को प्रत्येक परीक्षण के बाद किसी संपत्ति को रीसेट करने की आवश्यकता होती है, तो हम @afterEach
के साथ एक विधि की व्याख्या कर सकते हैं उस कार्य के लिए।
import org.junit.jupiter.api.*;class JUnit5Test { @Test void firstTest() { System.out.println(1); } @टेस्ट शून्य सेकेंडटेस्ट () { System.out.println(2); } @AfterEach शून्य के बाद (TestInfo testInfo) {स्ट्रिंग कॉलिंगटेस्ट =testInfo.getTestMethod ()। get ()। getName (); System.out.println (कॉलिंगटेस्ट); }}
आउटपुट:
1firstTest2secondTest
@BeforeAll
यह एनोटेशन सभी परीक्षणों से पहले एक विधि निष्पादित करता है। यह JUnit 4 के @BeforeClass
. के समान है . @BeforeAll
एनोटेशन का उपयोग आमतौर पर परीक्षणों के लिए विभिन्न चीजों को आरंभ करने के लिए किया जाता है।
उदाहरण:
import org.junit.jupiter.api.*;class JUnit5Test { @BeforeAll static void init() { System.out.println ("केवल सभी परीक्षणों से पहले एक बार चलाएं"); } @Test void firstTest() { System.out.println(1); } @टेस्ट शून्य सेकेंडटेस्ट () { System.out.println(2); }}
आउटपुट:
सभी परीक्षणों से पहले केवल एक बार चलाएं12
@AfterAll
@आफ्टरऑल
एनोटेशन का उपयोग एनोटेट विधि को निष्पादित करने के लिए किया जाता है, केवल सभी परीक्षणों को निष्पादित करने के बाद। यह JUnit 4 के @AfterClass
. के समान है . हम सभी परीक्षणों के अंत में सभी प्रक्रियाओं को समाप्त करने या समाप्त करने के लिए इस एनोटेशन का उपयोग करते हैं।
उदाहरण:
import org.junit.jupiter.api.*;class JUnit5Test { @Test void firstTest() { System.out.println(1); } @टेस्ट शून्य सेकेंडटेस्ट () { System.out.println(2); } @AfterAll स्थैतिक शून्य के बाद() { System.out.println ("सभी परीक्षणों के बाद केवल एक बार चलाएं"); }}
आउटपुट:
12सभी परीक्षणों के बाद केवल एक बार चलाएं
@टैग
हम इस एनोटेशन का उपयोग क्लास या मेथड लेवल पर फ़िल्टरिंग टेस्ट के लिए टैग घोषित करने के लिए कर सकते हैं।
@टैग
एनोटेशन तब उपयोगी होता है जब हम चयनित परीक्षणों के साथ एक परीक्षण पैक बनाना चाहते हैं।
उदाहरण:
import org.junit.jupiter.api.Tag;import org.junit.jupiter.api.Test;@Tag("smoke")class JUnit5Test { @Test @Tag("login") voidValidLoginTest( ) { } @Test @Tag("search") void searchTest() { }}
@अक्षम
@अक्षम
एनोटेशन का उपयोग क्लास या मेथड लेवल पर टेस्ट को डिसेबल या स्किप करने के लिए किया जाता है। यह JUnit 4 के @Ignore
. के समान है ।
कक्षा स्तर पर घोषित होने पर, सभी @test
तरीकों को छोड़ दिया जाता है। जब हम @Disabled
. का उपयोग करते हैं विधि स्तर पर, केवल व्याख्या की गई विधि अक्षम है।
उदाहरण:
@अक्षम
परीक्षण वर्ग को अक्षम करने के लिए उपयोग किया जाता है:
import org.junit.jupiter.api.Disabled;import org.junit.jupiter.api.Test;@Disabledclass DisabledClassDemo { @Test void testWillBeSkipped() { }}
उदाहरण:
@अक्षम
परीक्षण विधि को अक्षम करने के लिए प्रयुक्त एनोटेशन:
import org.junit.jupiter.api.Disabled;import org.junit.jupiter.api.Test;class DisabledTestsDemo { @Disabled @Test void testWillBeSkipped() { } @Test void testWillBeExecuted() { }}