나는 실패 할 때 어떤 메소드가 리콜 될지 테스트하려고한다. 별도의 스레드에서 호출이 호출됩니다. 그래서 나는 이와 같은 코드를 작성합니다.멀티 스레딩에서 easymock 사용하기
final Foo mock = createStrictMock(Foo.class);
mock.bar();
expectLastCall().andThrow(new RuntimeException("TEST EXCEPTION"));
mock.bar();
replay(mock);
doStuff();
sleepSomeTime(); //Pretty dirty. But I need to test it in multithreading.
verify(mock);
그리고 테스트가 통과되었습니다. 하지만 아직 리콜을 구현하지 않았습니다.
내가mock.bar();
expectLastCall().andAnswer(new IAnswer<Void>() {
@Override
public Void answer() throws Throwable {
sleepSomeTime();
throw new RuntimeException("TEST EXCEPTION");
}
});
와
mock.bar();
expectLastCall().andThrow(new RuntimeException("TEST EXCEPTION"));
교체, 테스트가 실패 할 것이 아니라 내 모든 테스트 주위에 sleepSomeTime를 추가 좋아하지 않는다. 그 옆에, 나는이 특별한 경우에 도움이되는 동안 실제로 이해하지 못한다. 그래서
왜 지연을 추가하면 도움이 되었습니까?
그런 것들을하는 올바른 방법은 무엇입니까?
최상의 답변입니다. 그러나 나는 이것이 자물쇠없이 이루어져야한다고 생각합니다. –
코드에 따라 콜백을 연결할 수 있으므로 확인 방법은 모의 마지막 줄을 간질 이는 콜백에서 수행됩니다. –