2014-07-11 2 views
1

스프링 데이터에서 JpaRepository라는 매우 유용한 인터페이스를 발견했습니다. 더 많은 기능이 필요하기 때문에 저장소에 대한 내 자신의 인터페이스를 만들기로 결정했습니다.스프링 리포지토리 테스트

public interface BaseRepository<T, ID extends Serializable> 
     extends JpaRepository<T, ID> { 
    public <TA, TV> int deleteBy(SingularAttribute<T, TA> attr, TV val); 
} 

알다시피 일반 인터페이스입니다. 그것은 잘 동작하지만 어떻게 테스트 할 수 있는지 알고 싶습니다. 물론 각 구체적인 저장소에 대한 통합 테스트를 작성할 수 있지만 더 나은 방법을 찾고 있습니다.

답변

0

평소와 같이 테스트 할 때 무엇을 테스트하고 있는지 확인해야합니다. 다음 질문에 대한 답변 찾기 :

  1. 기본 데이터베이스를 테스트 하시겠습니까?
  2. 이 리포지토리에 대한 스프링 데이터 리포지토리 커넥터를 테스트 하시겠습니까?
  3. 코드가 인터페이스에서 올바른 메서드를 호출하는지 테스트하려고합니까?

Doing # 1은 쓸모가 없습니다. 데이터베이스 공급 업체는 이미 제품에 대해 수천 가지 테스트를 수행했습니다. 이 노력을 다시 할 이유가 거의 없습니다.

스프링 데이터의 코드에서 버그가 의심되는 경우를 제외하고는 # 2 작업이 유용하지 않습니다.

# 3을 남겨 둡니다. 조롱 프레임 워크를 사용하여 메소드가 적절한 위치에서 호출되는지 확인하십시오 (인수를 점검 할 수도 있습니다).

그런 식으로 코드가 올바르게 작동하는지 확인할 수 있습니다.

프레임 워크에서 오류가 발생하거나 개체가 올바르게 삭제되지 않은 것을 확인한 경우 더 많은 테스트를 추가 할 수 있습니다. 하지만 대부분의 경우 데이터베이스 또는 스프링 데이터의 버그로 인해 발생하지 않습니다. 대신 코드에서 deleteBy()을 호출하지 않거나 잘못된 인수를 사용하여 메서드를 호출합니다.

관련 문제