काम नहीं कर रहा है। मैं यह सत्यापित करने की कोशिश कर रहा हूं कि संग्रह। शफल() विधि को मेरी कक्षाओं में से एक में बुलाया गया था। मैंने मॉकिटो के साथ पावरमैक पर (छोटे) दस्तावेज के माध्यम से पढ़ा और अन्य मुद्दों के माध्यम से पढ़ा जो इस मुद्दे से निपटाए और एक संकल्प नहीं मिला।पावरमोक और मॉकिटो के साथ स्टेटिक मॉकिंग
@RunWith(PowerMockRunner.class)
@PrepareForTest(Collections.class)
public class MyTest {
@Test
public void testShuffle() {
PowerMockito.mockStatic(Collections.class);
PowerMockito.doCallRealMethod().when(Collections.class);
Collections.shuffle(Mockito.anyListOf(Something.class));
ClassToTest test = new ClassToTest();
test.doSomething();
PowerMockito.verifyStatic(); // Verify shuffle was called exactly once
Collections.shuffle(Mockito.anyListOf(Something.class));
}
}
public class ClassToTest {
private final List<Something> list;
// ...
public void doSomething() {
Collections.shuffle(list);
// do more stuff
}
}
उपरोक्त कोड को देखते हुए, मैं इकाई परीक्षण पास की अपेक्षा करता हूं। हालांकि, इकाई परीक्षण निम्नानुसार विफल रहता है:
Wanted but not invoked java.util.Collections.shuffle([]);
Actually, there were zero interactions with this mock.
मैं क्या गलत कर रहा हूं?
धन्यवाद
संपादित करें: सुझाव नीचे मैं निम्नलिखित की कोशिश की, और मैं एक ही त्रुटि मिलती है के अनुसार।
@RunWith(PowerMockRunner.class)
@PrepareForTest(Collections.class)
public class MyTest {
@Test
public void testShuffle() {
PowerMockito.mockStatic(Collections.class);
ClassToTest test = new ClassToTest();
test.doSomething();
PowerMockito.verifyStatic(); // Verify shuffle was called exactly once
Collections.shuffle(Mockito.anyListOf(Something.class));
}
}
क्या होता है यदि आप अपने matcher पर 'anyListOf' से' किसी भी (List.class) 'पर प्रतिबंध को ढीला करते हैं? क्या होता है यदि आप '@ PrepareForTest' एनोटेशन में 'ClassToTest' जोड़ते हैं? –