मैं नीचे के रूप में अपवाद फेंकने के लिए एक शून्य स्थिर विधि का नकल करने के लिए Powermock और Mockito का उपयोग करने की कोशिश कर रहा हूं। लेकिन मैं एक समस्या से मुलाकात की। जब तक मैं एक ही तर्क के साथ Adder.add() के दो आमंत्रण नहीं करता, तो मॉक IOException
फेंक नहीं दिया जाएगा।Powermock के साथ अपवाद फेंकने के लिए एक शून्य स्थैतिक विधि नकली कैसे करें?
बीटीडब्ल्यू, मैंने यूनिट टेस्ट क्लास में @RunWith(PowerMockRunner.class)
और @PrepareForTest(Adder.class)
जोड़ा है।
class Adder{
public static void add(int i) throws IOException{
return;
}
}
@Test
public void testAdder() throws IOException{
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(12);
try {
Adder.add(11);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// assert things
}
अग्रिम धन्यवाद। :)
उत्तर नीचे जैसा है।
परामर्श के बाद http://code.google.com/p/powermock/issues/detail?id=278, वास्तव में Adder.add (12) ऊपर नकली स्थैतिक विधि स्थापित करने का हिस्सा है। इसका मतलब है कि तर्क 12 के साथ Adder.add() का आह्वान करते समय, IOException फेंक दिया जाएगा। समझना मुश्किल है, है ना? :) तो यह नीचे के रूप में लिखा जाना चाहिए।
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
यह सहज नहीं है। इस काम को पाने के लिए संघर्ष किया। पारितोषिक के लिए धन्यवाद। – Dhiraj
ध्यान दें कि 'Adder.add (anyInt());' अपवाद को ट्रिगर नहीं करता है, यह इसे 'Adder.add()' पर कॉल पर लागू करता है। – sjngm