2015-05-22 15 views
6

मैं जुनीट 4.11 का उपयोग कर रहा हूं।क्यों जुनीट परीक्षण अपवाद हमेशा विफल रहता है?

ग्रहण संस्करण: लूना सेवा रिलीज 2 (4.4.2)

मैं अपवाद परीक्षण कर की जरूरत है। कोड शायद इस तरह:

// src code 
public void myMethod throws MyException { 
    ... 
    throw new MyException(msg); 
    ... 
} 

// test code 
@Test (expected = MyException.class) 
public void testMyMethod() { 
    try { 
     myMethod(); 
     fail(); 
    } catch (MyException e) { 
     assertEquals(expectedStr, e.getMessage()); 
    } 
} 

लेकिन परीक्षण हमेशा विफल रहता है, मैं गलत कहां हूं?

+0

@getgetman से (सही) उत्तर में जोड़ना: आपको जुनीट के ['अपेक्षित अपवाद '] (http://junit.org/apidocs/org/junit/rules/ExpectedException.html) के साथ अपवादों का परीक्षण करना चाहिए। – Seelenvirtuose

उत्तर

4

जब आप Test एनोटेशन के लिए एक expected अपवाद प्रदान करते हैं परीक्षण केवल सफल होगा यदि अपवाद की उम्मीद परीक्षा पद्धति से फेंक दिया है। हालांकि, विधि से प्रचार करने से पहले आप अपवाद को पकड़ते हैं।

ऐसा लगता है कि आप अपवाद संदेश का भी परीक्षण करना चाहते हैं, इसलिए परीक्षण को संतुष्ट करने के लिए अपवाद e अपवाद। यह जांचने के आधार पर, आपको विधि पर throws खंड की आवश्यकता हो सकती है।

+0

मैं परीक्षण को संतुष्ट करने के लिए इसे पुनर्स्थापित करने के साथ संदेश का परीक्षण करने के लिए अपवाद को पकड़ने की अनुशंसा नहीं करता। ['ExpectedException'] (http://junit.org/apidocs/org/junit/rules/ExpectedException.html) नियम का उपयोग करना बेहतर है। – Seelenvirtuose

+0

यदि आप संदेश का परीक्षण करना चाहते हैं और साथ ही तथ्य यह है कि अपवाद फेंक दिया गया है, तो आप बस 'अपेक्षित = MyException.class' को हटा सकते हैं और बाकी कोड को यहां छोड़ सकते हैं। इससे पहले कि आपने जुनीट में जो भी जोड़ा गया था, उससे अपवादों का परीक्षण किया गया था, और यह अभी भी काम करता है। –

+0

@ सेलेनवर्टुओस हां, मुझे लगता है कि आपका सुझाव अच्छा है। –

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