2014-06-12 9 views
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 자체가이 문제에 오고있다. 내가 이것을 성취 할 수있는 방법이 있습니까? 이 문제를 해결할 수있는 대안이나 다른 프레임 워크가 있습니까? 코멘트에서 해결

+0

정확하게 이해했다면 첫 번째 모키토 샘플이 실패한 것입니다. 맞습니까? 코드를 복사하여 붙여 넣으려고했는데 내 자신의 테스트를 만들었습니다. 여기서는 완벽하게 작동하는 것 같습니다. 오류의 원인이되는 또 다른 모의가있을 수 있습니까? 무효 인수에 대해 불평하고 코드 샘플에서 아무 곳이나 void를 사용하지 않습니다. –

+0

void argument에 대한 메시지가 eclipse Juno에서 오류로 표시됩니다 (JDK 버전은 8이지만 1.6 호환으로 설정 됨). 어떤 IDE를 사용하고 있습니까? –

+0

내가 테스트 한 환경은 spring-tool-suite 3.4.0이며 java7 이클립스 4.3.1에서 java 6으로 설정되었습니다. 그러나이 버전은 문제가 아닙니다. 컴파일러는 Mockito.when() 메서드가 void를 인수로 사용할 수 없다고 알려줍니다. upsert 메서드의 서명을'void upsert (..)'로 변경하면, 같은 컴파일 오류가 발생합니다. –

답변

0

:

이 문제는 방법은 무효로 업데이트되면서처럼 .. 기능을 테스트하기 위해 전달 된 객체를 수정하는 대답을 사용했다 보인다.

관련 문제