मैं कुछ प्रतिबिंब आधारित तरीकों का नकल करने की कोशिश कर रहा हूं। नीचे आप विवरण,मॉकिंग प्रतिबिंब आधारित कॉल
क्लास टेस्ट के तहत
public class TracerLog {
@AroundInvoke
public Object logCall(InvocationContext context) throws Exception {
Logger logger = new Logger();
String message = "INFO: Invoking method - "
+ context.getMethod().getName() + "() of Class - "
+ context.getMethod().getDeclaringClass();
logger.write(message);
return context.proceed();
}
}
टेस्ट
public class TracerLogTest {
@Mock
InvocationContext mockContext;
@Mock
Logger mockLogger;
@InjectMocks
private TracerLog cut = new TracerLog();
@BeforeMethod
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void logCallTest() throws Exception {
when(mockContext.proceed()).thenReturn(true);
when(mockContext.getMethod().getDeclaringClass().getName()).thenReturn("someClass");
cut.logCall(mockContext);
verify(mockContext).proceed();
}
}
या
@Test
public void logCallTest() throws Exception {
when(mockContext.proceed()).thenReturn(true);
when(mockContext.getMethod().getName()).thenReturn("someMethod");
when(mockContext.getMethod().getDeclaringClass().getName()).thenReturn("someClass");
cut.logCall(mockContext);
verify(mockLogger).write(anyString());
verify(mockContext).proceed();
}
लेकिन, परीक्षण एक NullPointerException के साथ विफल देख सकते हैं । मैं समझता हूं कि मैं अवधारणाओं को मजाक करने के खिलाफ कुछ गलत कर रहा हूं, लेकिन मुझे समझ में नहीं आता कि यह क्या है। क्या आप इस पर कुछ प्रकाश डाल सकते हैं और यह भी सुझाव दे सकते हैं कि इस विधि का परीक्षण कैसे किया जा सकता है?
धन्यवाद।
आप अपनी नकली वस्तुओं और अपनी वस्तु को परीक्षण के तहत कैसे बना रहे हैं? क्या आप केवल टेस्ट विधि के बजाय अपनी पूरी टेस्ट क्लास पोस्ट कर सकते हैं? धन्यवाद। –
@ डेविडवैलस मैंने अब पूरा कोड शामिल करने के लिए प्रश्न संपादित किया है। – Bala