आप ऐसा नहीं कर सकते क्योंकि युक्ति के अनुसार आप एक ही एनोटेशन को एक ही एनोटेट तत्व पर दो बार नहीं डाल सकते।
तो समाधान क्या है? इसका उपाय यह है कि आप केवल एक @RunWith()
धावक के साथ रखें जिसके बिना आप खड़े नहीं हो सकते और दूसरे को किसी अन्य चीज़ से बदल सकते हैं। आपके मामले में मुझे लगता है कि आप इसे हटा देंगे MockitoJUnitRunner
और प्रोग्रामिक रूप से यह करेंगे।
वास्तव में केवल एक चीज जो इसे चलाती है:
MockitoAnnotations.initMocks(test);
परीक्षण मामले की शुरुआत में। इसलिए, इस कोड को setUp()
विधि में रखना सबसे सरल उपाय है :
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
मुझे यकीन नहीं है, लेकिन शायद आपको ध्वज का उपयोग करके इस पद्धति के कई कॉल से बचना चाहिए:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
हालांकि बेहतर, पुन: प्रयोज्य समाधान को JUnt के नियमों के साथ लागू किया जा सकता है।
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
अब बस अपने परीक्षण वर्ग में निम्न पंक्ति जोड़ें:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
और आप इस परीक्षण मामले को किसी भी धावक के साथ चला सकते हैं जिसे आप चाहते हैं।