मैं मैक बनाने के लिए EasyMock का उपयोग कर रहा हूं जो परीक्षण कक्षा में निजी पैरामीटर (सेटटर के बिना) में से एक है। मैंने प्रतिबिंब का उपयोग करने की कोशिश की - लेकिन यह सही ढंग से काम नहीं करता है।परीक्षण वर्ग निजी क्षेत्र में EasyMock नकली इंजेक्षन कैसे करें
public class TestedClassTest{
@Test
public void test(){
TestedClass instance = new TestedClass();
MockedClass mocked = EasyMock.createMock(MockedClass.class);
Data data = new Data();
//Void setter
DataType dataType = (myDataType.DataType) EasyMock.anyObject();
mocked.setDataType(dataType);
EasyMock.expectLastCall();
//expect
EasyMock.expect(mocked.getData()).andReturn(data);
EasyMock.replay(mocked);
Field field = instance.getClass().getDeclaredField("mockedClass")
field.setAccessible(true);
field.set(instance, mocked);
//run tested method
instance.someAction();
EasyMock.verify(mocked);
}
}
इम विफल हो रही जानकारी:
Unexpected method call MockedClass.setDataType([email protected]):
MockedClass.getData(): expected: 1, actual: 0
junit.framework.AssertionFailedError:
Unexpected method call MockedClass.setDataType([email protected]):
MockedClass.getData(): expected: 1, actual: 0
इम यकीन है कि इस विधि का परीक्षण किया "instance.someAction()" के दौरान "MockedClass" वस्तु पर निकाल दिया जाता है
कैसे इस समस्या को हल करने के लिए?
संपादित - उत्तर: के बाद दोगुनी को सही replay.mocked()
मैंने पाया (इतना आसान!) कि एक और शून्य विधि EasyMock.expectLastCall()
सुधार किया गया है और अभी भी इसी तरह की समस्या है – Marcin
क्या आपको यकीन है कि त्रुटि समान है? – hvgotcodes
संपादित कोड और त्रुटि, thx! – Marcin