2009-06-30 4 views
5

우리 애플리케이션은 Spring bean으로 작성된 서비스 레이어와 DAO 레이어를 가지고있다.테스트 케이스 : Spring bean을 이용한 모킹 데이터베이스

서비스 층 -을 테스트하는 동안 나는 그

그래서 서비스 계층 - I를 테스트입니다 때 DAO 계층을위한 '모의'IMPL을 만들어 내가 조롱하고 그래서 실제 데이터베이스에 의존하고 싶지 않아 서비스 레이어 빈을 모의 DAO 빈에 연결하십시오. 그리고 프로덕션에서는 서비스 레이어를 '실제'DAO 빈에 연결합니다.

그게 좋습니까? 데이터베이스 레이어를 조롱하는 방법에 대한 다른 제안이 있으십니까?

설명 :이 질문은 DAO 레이어가 아닌 서비스 레이어를 테스트하는 방법입니다. 서비스 계층을 테스트하는 동안 DAO 계층이 이미 테스트되었거나 테스트가 필요하지 않다고 가정합니다. DAO 구현에 의존하지 않고 서비스 계층을 테스트하는 방법 - 따라서 DAO 계층을 조롱합니다.

답변

5

이것은 수년 동안 지금까지 사용해온 기술입니다.

  • 하는 실제 자바 클래스
  • 를 사용하여 동적 조롱 프레임 워크와 같은 jMock (내 취향) 또는 EasyMock에
로 모의 인스턴스를 만듭니다는 DAO 인터페이스를 조롱에 올 때 당신은 어떤 선택을해야합니다

동적 조롱 프레임 워크를 사용하면 복잡한 클래스를 작성하지 않고도 다양한 상황 (데이터, 1 행, 많은 행, 예외 스로 잉)을 테스트 할 수 있습니다.

1

조롱을 사용하여 데이터베이스를 테스트하는 좋은 방법입니다. 나는 대체 제안이 필요하다고 생각하지 않는다. 나는 당신이 이미 올바른 기술을 가지고 있다고 생각합니다!

1

당신은 분명합니다. 옳은 길에. 내가 질문 데이터베이스를 조롱하는 서비스를 테스트 할 때 DAO 층을 조롱하는 등 nnot 너무 간단 보인다 명시 적으로, 테스트 DAO 계층에 대한 모범 사례에 전념 알고있는 것처럼 선택의

내 조롱 프레임 워크는 Mockito

0

입니다.

개인적으로는 고전적 단위 테스트의 의미에서 DAO 계층을 실제로 단위 테스트하는 것이 합리적이라면 개인적으로 질문을 제기합니다. DAO 계층을 적절히 설계하면 도메인 객체를 쿼리에 매핑하는 것 이상의 효과를 얻을 수 있습니다.

그런데 데이터 소스 조롱이 단순히 임베디드 데이터베이스를 제기하는 것보다 훨씬 더 많은 노력을 기울이기 때문에 H2, HSQL 또는 Java 6 임베디드 Derby와 같은 내장 데이터베이스를 사용하라는 제안이있었습니다. Spring 3은 그러한 데이터베이스를 즉시 생성 할 수있는 훌륭한 빌더 패턴을 제공합니다. 또한 RC1은 설치를 쉽게하기 위해 jdbc 네임 스페이스를 도입 할 예정입니다. 자세한 내용은 this one을 참조하십시오.

그러나 내장 된 데이터베이스를 사용하는 현재 Spring 2.5 분기에서도 데이터베이스 JAR을 가져 와서 DataSource을 적절히 설정해야합니다.

+0

질문에 추가 된 설명을 참조하십시오. 감사 –