EasyMock 사용할 때 주의 할 것
public void foo(Bar bar) {
...
bar.toby(whiteship);
bar.whiteship(toby);
}
...
bar.toby(whiteship);
bar.whiteship(toby);
}
위와 같은 메소드를 테스트 할 때 EasyMock을 사용해서 다음과 같은 테스트를 작성할 수 있습니다.
@Test
public void foo(){
Bar mockBar = createMock(Bar.class);
...
mockBar.toby(whiteship);
mockBar.whiteship(toby);
replay(mockBar);
a.foo(mockBar);
verify(mockBar);
}
public void foo(){
Bar mockBar = createMock(Bar.class);
...
mockBar.toby(whiteship);
mockBar.whiteship(toby);
replay(mockBar);
a.foo(mockBar);
verify(mockBar);
}
테스트가 통과할 것만 같은 코드입니다. 그렇쵸? 대부분은 테스트가 통과 합니다. 그런데 통과하지 않는 경우도 있습니다.
java.lang.IllegalStateException: missing behavior definition for the preceeding method call toby(whiteship);
이런 메시지와 함께 테스트가 통과하지 않습니다.
그럴 때는 뭘 확인해 봐야 할까요? Bar 인터페이스에 있는 whiteship과 foo라는 메소드의 리턴타입이 있는지 확인해봐야 합니다. 리턴타입이 있으면 http://whiteship.tistory.com/1504