2012-07-30 2 views
18

나는 이것에 관해서 몇 가지 질문을 보았다. 그러나 나는 나의 특별한 문제에 대한 답을 이해할 수 없다.EasyMock을 사용하여 void 메쏘드를 테스트하는 방법

나는 모의 객체를 가지고 있는데, 테스트를 위해 어떤 메소드에 보내지는 "object1"을 호출 할 수 있으며, testMethod()를 호출 할 수 있습니다. 그래서 결국 전화를 겁니다.

testMethod(object1); 

테스트 용입니다. 이제 곳이 testMethod에서, 그것은 무효 방법입니다 방법

object1.toggleDisplay(); 

를 호출하는 부분이있을 것이다. 이 방법은 실제로 뭔가를 반환

object1.getDisplay() 

같이 인 경우에, 나는 보통하지만

EasyMock.expect(object1.getDisplay()).andReturn(whatever); 

할, 그냥이 참으로 호출 된 된 것을 테스트하려면이는 무효 방법이며, 내가 좋아하는 것 일정한 시간 동안. 가장 쉬운 방법은 무엇입니까? 여러분의 기대를 설정할 때

덕분에 일이 지난 몇 년 동안 변경하지 않은 경우

답변

22

, 당신은 expectLastCall를 사용합니다.

object1.toggleDisplay(); 
object.expectLastCall(); 
+1

를 내 실제 메서드 내 object.expectLastCall()를 넣어이 너무 기다려? 유닛 테스트 클래스와 실제 프로그램 클래스가 분리되어 있고, 실제 프로그램 안에 단위 테스트 코드가없는 것을 선호합니다. – KWJ2104

+0

아니요, 이전에'EasyMock.expect (object1.getDisplay())와 .Return (뭐든간에) '을 사용했던 단위 테스트에서 메소드 호출과'expectLastCall(). times (NUM_TIMES)'를 넣습니다. – DoctorRuss

+0

특정 방법을 타겟팅하려면이 방법을 사용할 수 있습니까? 예를 들어, 나는 toggleOn()과 toggleOff() 메소드를 가지고있다. – KWJ2104

10
object1.toggleDisplay(); 
EasyMock.expectLastCall().times(5); 

또는 정적 EasyMock 방법 가져 오는 경우 :

import static org.easymock.EasyMock.*; 

[...] 

object1.toggleDisplay(); 
expectLastCall().times(5); 
관련 문제