0
I는 다음과 같습니다 DAO 코드를 가지고 : 내가 Mockito를 사용하여 saveMyEntity() 메소드를 테스트 할 수 있지만, 나에게 오류 메시지가 mockito 보여주는Mockito - 스텁 슈퍼 (추상) 클래스 메소드
public abstract class GenericDAO <T, I> {
public I upsert(T entity){
//implementation
}
}
public class MyEntityDAO extends GenericDAO <MyEntity, Integer> {
public List<MyEntity> searchMyEntity(SearchParameters params){
//domain specific entity search
}
}
public class MyEntityService{
private MyEntityDAO myEntityDAO;
public Integer saveMyEntity(MyEntityVO vo){
//transform vo to entity with business logic
return myEntityDAO.upsert(myEntityInstance);
}
}
을 - "를 메소드 (t)가 인수 (void)에 적용 할 수없는 경우 "메소드.
Mockito.when(myEntityDAO.upsert(Matchers.any(MyEntity.class)))
.thenReturn(1);
이 작동 코드입니다 :
이
코드입니다Mockito.when(myEntityDAO.searchMyEntity(testSearchParams))
.thenReturn(mockedListOfMyEntities);
것 같다가 upsert()는 MyEntityDAO의 슈퍼 클래스에와 있기 때문에하지 MyEntityDAO 자체가이 문제에 오고있다. 내가 이것을 성취 할 수있는 방법이 있습니까? 이 문제를 해결할 수있는 대안이나 다른 프레임 워크가 있습니까? 코멘트에서 해결
정확하게 이해했다면 첫 번째 모키토 샘플이 실패한 것입니다. 맞습니까? 코드를 복사하여 붙여 넣으려고했는데 내 자신의 테스트를 만들었습니다. 여기서는 완벽하게 작동하는 것 같습니다. 오류의 원인이되는 또 다른 모의가있을 수 있습니까? 무효 인수에 대해 불평하고 코드 샘플에서 아무 곳이나 void를 사용하지 않습니다. –
void argument에 대한 메시지가 eclipse Juno에서 오류로 표시됩니다 (JDK 버전은 8이지만 1.6 호환으로 설정 됨). 어떤 IDE를 사용하고 있습니까? –
내가 테스트 한 환경은 spring-tool-suite 3.4.0이며 java7 이클립스 4.3.1에서 java 6으로 설정되었습니다. 그러나이 버전은 문제가 아닙니다. 컴파일러는 Mockito.when() 메서드가 void를 인수로 사용할 수 없다고 알려줍니다. upsert 메서드의 서명을'void upsert (..)'로 변경하면, 같은 컴파일 오류가 발생합니다. –