2017-10-26 9 views
0

Easymock에서 void 호출이 많이 발생하는 모의를하려고하는데 문제가 있습니다. 그러나해야 할 때 모의이 실패하는 데 문제가 있습니다.EasyMock 3.5로 여러 void 메서드가 필요합니다

그래서 persistConfiguration (Map)에 대한 호출을 기다리고 있습니다. 나는 절대 호출되지 않았 음을 확신합니다. 그러나 시험은 모두 동일하게 통과합니다.

내 조롱 인터페이스는 다음과 같습니다

public abstract class MyMockedClass{ 
    public abstract void start() throws Exception; 
    public abstract void stop() throws Exception; 
    public abstract void persistConfiguration(Map<String, Object> newConfiguration) throws Exception; 
} 

내가 기대 provider.start()를 제거하고 일치 getLastCall 호출 테스트 메시지

에 실패 할 경우 시험이

@RunWith(EasyMockRunner.class) 
public class MyFailingTest{ 
@Mock 
private MyMockedClass provider; 
.... 
    @Before 
    public void setUp() throws Exception{ 
     Map<String, Object> expectedSetConfig = new HashMap<>(); 
     expectedSetConfig.put("String", setString); 
     expectedSetConfig.put("File", testFile2.getCanonicalPath()); 

     /*Expect*/provider.start(); 
     expectLastCall().atLeastOnce(); 
     /*Expect*/provider.persistConfiguration(expectedSetConfig); 
     expectLastCall().times(1); 
     /*Expect*/provider.stop(); 
     expectLastCall().atLeastOnce(); 

     replay(provider); 
    } 

} 

처럼 보인다

예기치 않은 메서드 호출 MyMockedClass.start() : MyMockedClass.persistConfiguration ({문자열 = newstring 인수로 쓰여진 파일 = C : \ 작업 공간 \의 MEH의 \ 물건}) : 예상 : 1, 실제 : 0 MyMockedClass.stop은() : 예상 적어도 1, 실제 : 0

그래서 테스트가 실패 할 수 있지만 내 질문은 : start, stop 또는 persistConfiguration 메서드 중 하나를 호출하면 테스트를 실패하게하려면 어떻게합니까? persistConfiguration 메소드는 특정 값을 포함하는 맵 이외에는 호출되지 않으면 실패합니다.

답변

0

문제점을 발견했습니다.

테스트 후 verify(provider)에 전화하는 걸 깜빡 했네.

/*Expect*/provider.start(); 
expectLastCall().atLeastOnce(); 

설정

해당 호출을 기대하는 모의를 알려줍니다. 전화하지 않는 한 실제로 .atLeastOnce() 부분을 확인하지 않습니다. verify