JUnit के ExpectedException नियम के उपयोग के बारे में कोई प्रश्न है junit ExpectedException Rule JUnit से शुरू 4.7 एक इस तरह अपवाद परीक्षण कर सकते हैं (जो ज्यादा बेहतर तो @Test (उम्मीद = Exception.class है)) :एक अपेक्षित अपवाद नियम का उपयोग करके मैं एक परीक्षण के भीतर कई अपवादों का परीक्षण कैसे कर सकता हूं? के रूप में यहाँ का सुझाव दिया</p> <p>:
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
exception.expect(Exception.class);
foo.doStuff();
}
अब मुझे एक परीक्षण विधि में कई अपवादों का परीक्षण करने की आवश्यकता है और निम्नलिखित परीक्षण चलाने के बाद एक हरा बार मिला है और इस प्रकार हर परीक्षण पास हुआ।
@Test
public void testFailuresOfClass() {
Foo foo = new Foo();
exception.expect(IndexOutOfBoundsException.class);
foo.doStuff();
//this is not tested anymore and if the first passes everything looks fine
exception.expect(NullPointerException.class);
foo.doStuff(null);
exception.expect(MyOwnException.class);
foo.doStuff(null,"");
exception.expect(DomainException.class);
foo.doOtherStuff();
}
हालांकि कुछ समय बाद मुझे एहसास हुआ कि पहले चेक पास के बाद testmethod को छोड़ दिया गया है। यह कम से कम कहने के लिए संदिग्ध है। जूनिट 3 में यह आसानी से संभव था ... तो मेरा प्रश्न यहां है:
मैं अपेक्षित अपवाद नियम का उपयोग करके एक परीक्षण के भीतर कई अपवादों का परीक्षण कैसे कर सकता हूं?
आप अभी भी जूनिट 3 तरीके का उपयोग कर सकते हैं, लेकिन @Test (अपेक्षित) और अपेक्षित अपवाद का उपयोग करना संभव नहीं है। –
मुझे डर था ;-) – Lonzak
यह बुरा नहीं है। आम तौर पर प्रति परीक्षण एक चीज का परीक्षण करना बेहतर होता है। ठीक है अगर आप परीक्षण करते हैं, तो एक ही परीक्षण में किसी सूची के लिए नल, आकार और सामग्री न कहें, लेकिन एक परीक्षण में दो वैचारिक विभिन्न चीजों का परीक्षण न करें। यह कम पठनीय है। यदि आप प्रति परीक्षण एक चीज का परीक्षण करते हैं, तो आप 'testException' की बजाय, आपके परीक्षण का वर्णन करने के लिए विधि नाम का उपयोग कर सकते हैं। –