में पूर्व परिभाषित अपेक्षाओं को हटाकर मेरे पास एक ऑब्जेक्ट है कि मैं अपने परीक्षण वर्ग की @Before
/setUp()
विधि में जेएमॉकिट NonStrictExcpection()
के साथ मजाक कर रहा हूं ताकि यह परीक्षण के तहत मेरी कक्षा के सामान्य निष्पादन के लिए अपेक्षित मूल्य लौटा सके।JMockit
यह मेरे परीक्षण परीक्षण विधियों के लिए एक परीक्षण के लिए ठीक है जहां मैं इस कोड के गैर-सामान्य संचालन का परीक्षण करना चाहता हूं।
मैंने परीक्षण विधि में एक नई उम्मीद बनाने की कोशिश की है, जो मुझे लगता है कि सेटअप विधि में अपेक्षाओं को ओवरराइड करेगा, लेकिन मुझे पता चला है कि सेटअप विधि में अपेक्षा नई उम्मीद को दबा रही है।
जब मैं सेटअप अपेक्षा को हटाता हूं, परीक्षण विधि अपेक्षित व्यवहार करती है (लेकिन मेरे सभी अन्य परीक्षण विफल होते हैं)।
मुझे अपनी टेस्ट क्लास को कैसे कोड करना चाहिए ताकि मैं न्यूनतम परीक्षण कोड के साथ प्रत्येक परीक्षण के लिए सही ढंग से परिभाषित उम्मीदों को निर्धारित कर सकूं? (मुझे पता है कि मैं प्रत्येक टेस्ट विधि, में उम्मीद कोड कॉपी/पेस्ट कर सकता हूं लेकिन अगर मैं सभी टिकाऊ नहीं हूं तो ऐसा नहीं करना चाहता हूं)।
मेरे परीक्षण कोड कुछ इस तरह दिखता है (ध्यान दें, इस sorta psuedocode है और संकलन नहीं है, लेकिन आप अंदाजा हो):
public class TestClass{
@Before
public void setUp(){
// Here I define the normal behaviour of mockObject
new NonStrictExpectations() {{
mockObject.doSomething();
result = "Everyting is OK!";
}};
// Other set up stuff...
}
// Other Tests...
/**
* This method tests that an error when calling
* mockObject.doSomething() is handled correctly.
*/
@Test(expected=Exception.class)
public void testMockObjectThrowsException(){
// This Expectation is apparently ignored...
new NonStrictExpectations() {{
mockObject.doSomething();
result = "Something is wrong!";
}};
// Rest of test method...
}
}
इसका मतलब यह नहीं होता है कि आप मैन्युअल हर एक परीक्षा पद्धति पर expectTheUnknown() को लागू करने की जरूरत है? साथ ही, मुझे लगता है कि 'NonStrictExpectations' को वापस करने की वास्तव में आवश्यकता नहीं है। –
@IbrahimArief यह कुछ समय हो गया है जब से मैंने जवाब लिखा था, लेकिन ओपीएआईआर, ओपी प्रश्न का मुद्दा यह था कि जब विधि को बुलाया गया था तो एक और अधिक बढ़िया नियंत्रण की आवश्यकता थी। मुझे नहीं लगता कि इसमें कोई संदेह नहीं है कि यह समाधान एक हैक है, लेकिन कम से कम यह काम करता है :) – Steen
ओह यह खूबसूरती से काम करता है, इसमें कोई संदेह नहीं है। :) मैं सिर्फ अपनी चिंता की पुष्टि कर रहा था कि अपेक्षाओं को फैलाने के अलावा कोई अन्य तरीका नहीं है। किसी भी सामान्य मामले को ओवरराइड करने की विशेष अपेक्षाओं के बजाय जेमॉकिट में प्रत्येक विधि पर अज्ञात() परिभाषा। –