DA는 DAO 작성에 도움이됩니다. 지속성 프레임 워크로 iBATIS를 사용하고 SqlMapClientDaoSupport를 확장 할 때, SqlMapClient 모의가 DAO에 대해 설정되어야하지만 할 수 없습니다. SqlMapClientTemplate은 인터페이스가 아니기 때문에 EasyMock은 모의 객체를 생성 할 수 없습니다.SqlMapClientDaoSupport를 확장하는 DAO 단위 테스트 방법
답변
DAO 및 단위 테스트가 잘 진행되지 않습니다! 비즈니스 로직을 보유하지 않고 데이터베이스 액세스에 중점을 둔 구성 요소에서 모의하는 것은 의미가 없습니다. 대신 통합 테스트를 작성해야합니다. 스프링 참조 문서, 8.3 장을보십시오 : http://static.springframework.org/spring/docs/2.5.x/reference/testing.html
시도 Mockito보십시오. 그것은 모의 수업뿐만 아니라 인터페이스 수 있습니다.
정확한 이유는 내가 SqlMapClientDaoSupport
에서 연장되지 않는 이유입니다. 대신 SqlMapClientTemplate
(인터페이스 SqlMapClientOperations
으로 입력)에 의존성을 주입합니다. 다음은 스프링 2.5 예제 : @Banengusk으로
@Component
public class MyDaoImpl implements MyDao {
@Autowired
public SqlMapClientOperations template;
public void myDaoMethod(BigInteger id) {
int rowcount = template.update("ibatisOperationName", id);
}
}
그리고 Composition이 Inheritance보다 낫다는 또 다른 이유. –
제안 - 이것은 Mockito으로 달성 될 수있다. 그러나 귀하의 DAO가 귀하의 모의를 으로 감싸는 스프링 SqlMapClientTemplate
을 사용한다는 것을 확증하는 것이 중요합니다. 사실, SqlMapClientTemplate
은 IBatis 레이어의 SqlMapSession
에 대한 호출을 위임합니다.
은 따라서 몇 가지 추가 모의 설치가 필요합니다
mockSqlMapSession = mock(SqlMapSession.class);
mockDataSource = mock(DataSource.class);
mockSqlMapClient = mock(SqlMapClient.class);
when(mockSqlMapClient.openSession()).thenReturn(mockSqlMapSession);
when(mockSqlMapClient.getDataSource()).thenReturn(mockDataSource);
dao = new MyDao();
dao.setSqlMapClient(mockSqlMapClient);
우리는 다음과 같이 동작을 확인할 수 있습니다 : 나는 당신의 논리를 볼 수 있지만, 내가 단위에서 이익을 얻을 수 DAO 기능을 직시 할 수
Entity entity = new EntityImpl(4, "someField");
dao.save(entity);
ArgumentCaptor<Map> params = ArgumentCaptor.forClass(Map.class);
verify(mockSqlMapSession).insert(eq("insertEntity"), params.capture());
assertEquals(3, params.getValue().size());
assertEquals(Integer.valueOf(4), params.getValue().get("id"));
assertEquals("someField", params.getValue().get("name"));
assertNull(params.getValue().get("message"));
- 1. DAO (단위 저장소)는 단위 테스트를 받아야합니까?
- 2. 단위 테스트 조언 - .asmx 단위 테스트 방법
- 3. DAO 테스트 작성
- 4. 단위 테스트 작성 방법
- 5. 단위 테스트 'SetDefaults()'방법
- 6. AOP 단위 테스트 방법?
- 7. IDictionary의 단위 테스트 방법
- 8. 단위 테스트 방법
- 9. 단위 테스트 방법 IDataErrorInfo?
- 10. 단위 테스트 TimeZones 방법?
- 11. 단위 테스트 서브 클래스 단위 방법
- 12. .NET 단위 테스트 - applicationSettings 테스트 방법
- 13. 단위 테스트 코드 생성 방법
- 14. 단위 테스트 방법 BackgroundWorker C#
- 15. T-SQL 단위 테스트 방법
- 16. 단위 테스트
- 17. Python 단위 테스트 HTML로보고
- 18. 단위 테스트 단위 테스트에 새로운
- 19. 단위 테스트 웹용?
- 20. 단위 테스트 스레드?
- 21. 코드 의존성 단위 테스트
- 22. 테스트 하네스 생성 (단위 테스트)
- 23. ASP.NET MVC의 단위 테스트
- 24. 어떻게 단위 테스트에이 방법을 단위 테스트 저장소 방법
- 25. Java : DAO 및 서비스에 대한 모듈 테스트 방법
- 26. J2EE 응용 프로그램에서 DAO 테스트 케이스 작성
- 27. Eclipse : 기본 단위 테스트 디렉토리를 구성하는 방법
- 28. VS2008 단위 테스트 : "성공"메시지 포함 방법
- 29. 일반 클래스/메서드에 대한 단위 테스트 방법
- 30. Dispose() 결과에 대한 단위 테스트 작성 방법
테스트. 그러므로 나는 DAO가 단위 테스트를 받아서는 안된다고 말하는 것이 합리적이라고 생각하지 않는다. 모든 것은 문제의 클래스에 달려있다. – teabot