Это мой первый пост в Stackoverflow, до сих пор я был активным читателем этого форума, и я публикую свой первый вопрос здесь.Метод EasyMock mocked method возвращает null при вызове во второй раз после сброса mock-объекта
Это касается использования EasyMock, я новый пользователь EasyMock и в следующем примере кода. Я устанавливаю ожидание для метода соавтора с тем же возвращаемым объектом (неважно, является ли он одним и тем же объектом или другой объект, но результат тот же), и я сбрасываю его до выхода из метода тестирования. но когда выполняется второй тест, издевательский метод возвращает null, я не уверен, почему это происходит.
Если я бегу методы
@RunWith(PowerMockRunner.class)
@PrepareForTest({CollaboratorWithMethod.class, ClassTobeTested.class})
public class TestClassTobeTested {
private TestId testId = new TestId();
@Test
public void testMethodtoBeTested() throws Exception{
CollaboratorWithMethod mockCollaborator = EasyMock.createMock(CollaboratorWithMethod.class);
PowerMock.expectNew(CollaboratorWithMethod.class).andReturn(mockCollaborator);
EasyMock.expect(mockCollaborator.testMethod("test")).andReturn(testId);
PowerMock.replay(CollaboratorWithMethod.class);
EasyMock.replay(mockCollaborator);
ClassTobeTested testObj = new ClassTobeTested();
try {
testObj.methodToBeTested();
} finally {
EasyMock.reset(mockCollaborator);
PowerMock.reset(CollaboratorWithMethod.class);
}
}
@Test
public void testMothedtoBeTestWithException() throws Exception {
CollaboratorWithMethod mockCollaborator = EasyMock.createMock(CollaboratorWithMethod.class);
PowerMock.expectNew(CollaboratorWithMethod.class).andReturn(mockCollaborator);
EasyMock.expect(mockCollaborator.testMethod("test")).andReturn(testId);
PowerMock.replay(CollaboratorWithMethod.class);
EasyMock.replay(mockCollaborator);
ClassTobeTested testObj = new ClassTobeTested();
try {
testObj.methodToBeTested();
} finally {
EasyMock.reset(mockCollaborator);
PowerMock.reset(CollaboratorWithMethod.class);
}
}
}
Вот мой класс Collaborator
public class CollaboratorWithMethod {
public TestId testMethod(String text) throws IllegalStateException {
if (text != null) {
return new TestId();
} else {
throw new IllegalStateException();
}
}
}
А вот мой класс тестируемой
public class ClassTobeTested {
public static final CollaboratorWithMethod collaborator = new CollaboratorWithMethod();
public void methodToBeTested() throws IOException{
try {
TestId testid = collaborator.testMethod("test");
System.out.println("Testid returned "+ testid);
} catch (IllegalStateException e) {
throw new IOException();
}
}
}
Ищу за помощью от вас ребята, чтобы понять, что именно здесь происходит
Не уверен, что это связано с тем, что соавтор определен окончательно в ClassTobeTested. –
может быть, но не уверен, как я могу решить проблему в этом случае при модификации ClassTobeTested, поскольку я не хочу трогать свой ClassTobeTested только потому, что я не смог бы протестировать те же – Muthu
, по крайней мере, подтвердить это. –