EasyMock andReturn () 대 andStubReturn ()
사용의 차이 무엇입니까 andReturn(T value)
대 andStubReturn(T value)
EasyMock에 대한은?
어떤 상황 에서 동일한 결과를 얻을 수없는 andStubReturn()
곳 을 사용 andReturn()
하시겠습니까?
당신은 일어날 것으로 예상되는 모의 메소드 호출에 대해 스텁 리턴을 사용하지만 다른 방법으로는 관심이 없습니다. "일반"메소드 호출을 위해 정규 리턴을 사용합니다.
다음 방법을 고려하십시오.
public void someMethod(String arg) {
if (logger.isDebugEnabled()) {
logger.debug("Calling doSomething() on service "
+ service.getName().hashCode());
}
service.postMessage("{" + arg + "}");
if (logger.isDebugEnabled()) {
logger.info("Finished calling doSomething() on service "
+ service.getName().hashCode());
}
}
... service
조롱 할 수있는 필드가 있습니다. hashCode()
로그 문에 일이 고안되어 있지만, 요점은 통화의 수에 대응하는 당신의 모의 요구하는 것입니다 getName()
당신이 그렇지 않으면 그것에 대해 덜 신경 수없는 반면, NPE를 방지 할 수 있습니다.
이 방법에 대한 EasyMock에 기반 단위 테스트를 작성하면 거라고 andStubReturn()
호출을 getName()
하고 정상 사용 andReturn()
에 대한 호출 postMessage(String)
. 모의 객체를 확인할 때 후자 만 고려하고 log4j 구성을 변경해도 테스트가 중단되지 않습니다.
명확성을위한 추가 참고 사항입니다.
.andStubReturn ()을 사용하는 경우 (또는 .andReturn (foo) .anyTimes ()를 사용하는 경우) 예상되는 최소 호출 수는 없습니다. 따라서이 두 가지 중 하나를 사용하여 모의 기대치를 설정하고 모의 메서드가 호출되지 않으면 .verify () 호출이 어설 션되지 않습니다.
mocked 메서드가 호출되지 않을 때 주장 하지 않는 예제 ;
FooClass myFooClass = EasyMock.createNiceMock(FooClass.class);
EasyMock.expect(myFooClass.someMethod(EasyMock.anyInt()).andStubReturn(true);
EasyMock.replay(myFooClass);
EasyMock.verify(myFooClass);
mocked 메서드가 호출되지 않을 때 주장 하는 예제 ;
FooClass myFooClass = EasyMock.createNiceMock(FooClass.class);
EasyMock.expect(myFooClass.someMethod(EasyMock.anyInt()).andReturn(true).atLeastOnce();
EasyMock.replay(myFooClass);
EasyMock.verify(myFooClass);
참조 URL : https://stackoverflow.com/questions/3740376/easymock-andreturn-vs-andstubreturn
'programing' 카테고리의 다른 글
"|"는 무엇입니까? (0) | 2021.01.15 |
---|---|
Python의 xlrd, xlwt 및 xlutils.copy를 사용하여 스타일 유지 (0) | 2021.01.15 |
'cl'은 내부 또는 외부 명령으로 인식되지 않습니다. (0) | 2021.01.15 |
request.user는 SimpleLazyObject를 반환합니다. 어떻게 "깨우기"합니까? (0) | 2021.01.15 |
Android NumberPicker : XML에서 최소, 최대, 기본값 설정 (0) | 2021.01.15 |