2017-04-07 12 views
9

ज्यूनिट 4 के साथ हैमक्रिस्ट का उपयोग करने के लिए हम assertThat() फ़ंक्शन का उपयोग करते हैं। हालांकि, जुनीट 5 में अब assertThat() फ़ंक्शन नहीं होगा। मैं assertThat() के बिना हैमक्रिस्ट का उपयोग कैसे करूं?मैं जुनीट 5 के साथ हैमक्रिस्ट का उपयोग कैसे करूं जब जुनीट 5 में कोई जोर नहीं है() फ़ंक्शन?

उत्तर

12

आपको यह सुनिश्चित करना होगा कि हैमक्रिस्ट को कक्षा में शामिल किया गया है और फिर हैमक्रिस्ट द्वारा प्रदान किए गए assertThat() फ़ंक्शन का उपयोग करें। वर्तमान JUnit 5 User Guide - Writing Tests Assertions से,

JUnit बृहस्पति के org.junit.jupiter.Assertions वर्ग एक JUnit 4 की org.junit.Assert वर्ग में पाया जो एक Hamcrest Matcher स्वीकार करता है की तरह एक assertThat() विधि प्रदान नहीं करता है। इसके बजाए, डेवलपर्स तृतीय-पक्ष सम्मिलन पुस्तकालयों द्वारा प्रदान किए गए मैचर्स के अंतर्निहित समर्थन का उपयोग करने के लिए प्रोत्साहित किए गए हैं।

निम्नलिखित उदाहरण दर्शाता है कि एक ज्यूनिट बृहस्पति परीक्षण में हैमक्रिस्ट से assertThat() समर्थन का उपयोग कैसे करें। जब तक हैमक्रिस्ट लाइब्रेरी को क्लासपाथ में जोड़ा गया है, तो आप विधियों को जैसे assertThat(), is(), और equalTo() आयात कर सकते हैं और फिर उन्हें परीक्षणों में उपयोग करें जैसे कि assertWithHamcrestMatcher() विधि नीचे।

import static org.hamcrest.CoreMatchers.equalTo; 
import static org.hamcrest.CoreMatchers.is; 
import static org.hamcrest.MatcherAssert.assertThat; 

import org.junit.jupiter.api.Test; 

class HamcrestAssertionDemo { 

    @Test 
    void assertWithHamcrestMatcher() { 
     assertThat(2 + 1, is(equalTo(3))); 
    } 

} 

स्वाभाविक रूप से, JUnit 4 प्रोग्रामिंग मॉडल org.junit.Assert # assertThat उपयोग जारी रख सकते के आधार पर विरासत परीक्षण। "

+2

क्या चल रही है मेरे मन है,' assertThat' था सभी दावों को करने का नया तरीका माना जाता है, और फिर अचानक जुनीट 5 बाहर आता है, और किसी भी तरह से अभी भी सभी विरासत assert विधियों है, लेकिन एकमात्र आधुनिक भी हटा दिया है। वे पहले से ही एपीआई तोड़ने के लिए प्रतिबद्ध थे, तो आप ' मुझे लगता है कि वे वास्तव में वहां जा सकते थे और सभी अनावश्यक दावे विधियों को हटा दिया। आईएनआई मैंने देखा कि शायद यह माइग्रेशन की सुविधा के लिए था, लेकिन नहीं, पैरामीटर ऑर्डर भी वही नहीं है। – Trejkaz

संबंधित मुद्दे