मैं इस तरह एक वर्ग foo के साथ एक जावा 8 एप्लिकेशन हैJUnit परीक्षण लॉग बयान
public class FooTest {
private Foo foo;
@Before
public void setUp() throws Exception {
foo = new Foo();
}
@Test
public void testSomething() {
String result = foo.something();
assertEquals(result,"test");
}
}
मेरा उद्देश्य एक टेस्ट केस लिखना है जो something
विधि के रिटर्न वैल्यू और लॉगिंग स्टेटमेंट को सुनिश्चित करने के लिए लॉगिंग स्टेटमेंट का परीक्षण करता है। लॉगिंग स्टेटमेंट का परीक्षण करने के लिए जूनिट को कैसे सेट अप करना है, यह जानने के लिए मैंने वेब पर घंटों बिताए हैं। मैंने this, this, this और this विधि का कोई फायदा नहीं लिया है।
मुझे नहीं पता कि यह कुछ है जो मैं गलत कर रहा हूं या क्या। लेकिन यहाँ मेरी कोड पिछले उदाहरण के आधार पर दिया गया है:
public class FooTest {
private Foo foo;
@Mock private Appender appender;
@Captor private ArgumentCaptor captor;
@Before
public void setUp() throws Exception {
foo = new Foo();
MockitoAnnotations.initMocks(this);
Logger.getRootLogger().addAppender(appender);
}
@After
public void tearDown() throws Exception {
Logger.getRootLogger().removeAllAppenders();
}
@Test
public void testSomething() {
String result = foo.something();
assertEquals(result,"test");
verify(appender).doAppend(((LoggingEvent) captor.capture()));
LoggingEvent loggingEvent = (LoggingEvent) captor.getValue();
assertEquals(loggingEvent.getRenderedMessage(), "doing foo test");
}
}
लेकिन मैं निम्नलिखित त्रुटि मिलती है जब मैं इस चलाएँ:
Wanted but not invoked:
appender.doAppend(<Capturing argument>);
-> at <package>.testSomething(FooTest.java:22)
Actually, there were zero interactions with this mock.
वहाँ एक आसान तरीका पूरा करने के लिए जो मैं चाहता है? यदि यह सबसे अच्छा तरीका है तो मैं गलत क्या कर रहा हूं?
संकेत। आपकी समस्या ** नया ** कथन है जो आपके कोड में स्थान लेता है। आप यहां http://stackoverflow.com/questions/38863913/how-to-unit-test-log-e-in-android को समझ सकते हैं कि स्थिर तरीके से कॉल से कैसे छुटकारा पाएं या अपने मामले में नया। और: यह समझने के लिए कि क्यों ** नया ** समस्याएं देता है, आप कुछ वीडियो देखना चाहेंगे: https://www.youtube.com/playlist?list=PLD0011D00849E1B79 ... गंभीरता से: हर मिनट आपके समय के लायक है। – GhostCat
Foo में लॉगर है जो आपके लॉगर का परीक्षण करने के तरीके से लिखा या कार्यान्वित नहीं किया गया है। आप बस नए फू का आह्वान करते हैं, जहां उस बिंदु पर foo का अपना लॉगर आगे – kuhajeyan
संभावित डुप्लिकेट [लॉगर में किसी संदेश पर जुनीट कैसे करें] (http://stackoverflow.com/questions/1827677/how-to क्या, एक JUnit-ज़ोर-ऑन-ए-संदेश में एक-लकड़हारा) – IanEdington