나는 프로젝트의 일환으로 우리는 읽기 전용 DAO (Bill 클래스)를 가지고있다. 프로젝트 자체는 이미 데이터베이스에 표시되지 않은 Bill의 새 인스턴스를 생성해서는 안되며이 Bill 클래스의 값을 변경하거나 업데이트해서는 안됩니다. 그래서 Bill 인스턴스를 실수로 수정하는 것을 막기 위해 모든 생성자와 private은 setter가 없다. (Hibernate는 빌 인스턴스로 빌 데이터를 마샬링하고 public 생성자와 설정자가 없다는 이유로 방해받지 않는다.) 이제 질문에테스트 용으로 읽기 전용 DAO를 만들 때 가장 좋은 방법은 무엇입니까?
:
통합 테스트의 일환으로 나는 우리의 프로젝트는 데이터베이스에 표시되지 객체 새로운 법안을 만들 결코 것이라는 원칙을 위반해야합니다. 위 원칙을 위반하는 가장 좋은 방법은 무엇입니까?
반사 기반 빌더 : 내가 제시 한 하나 개의 아이디어는 빌 클래스의 코드를 변경하지 않아도되도록 반사 기반 빌더를 사용하고, 완전히 어떤 가정의 경우 테스트 빌더를하는 것입니다 빌더가 빌 클래스의 필드를 잘못 작성한 것을 신속하게 식별합니다.
패키지 - 개인 생성자 : 내 상사에 의해 제안 된 대안이 빌더가 사용할 수있는 패키지 개인 생성자를 포함하는 것입니다. 이것은 빌더가 작동한다는 것을 보증하기 위해 테스트가 더 간단하고 간단하다는 이점이 있습니다. 그러나이를 수용하기 위해서는 주 코드베이스에 명시적인 코드가 필요합니다.
우리 중 어느 누구도 두 아이디어에 매우 열중하지 않습니다. 그래서 다른 사람들이 이전에 비슷한 문제를 어떻게 다루 었는지, 어떻게 다루 었는지 궁금합니다. 저는 "민첩한 테스트 : 테스터와 민첩한 팀을위한 실용 가이드"를 통해 엄지 손가락을 봤습니다. 그러나 지금까지 어떤 관련성도 발견하지 못했습니다.
NB. 청구서가 DAO의 복잡한 계층 구조 (데이터베이스의 외래 키 제약 조건 포함)의 일부이기 때문에 데이터베이스와 직접 상호 작용하는 것만 큼 간단하지 않습니다. 따라서 이러한 계층 구조를 빠르고 간단하게 작성한 다음이 모든 데이터를 데이터베이스에 저장하는 것이 바람직합니다.
"우발적 인 변경"에 대해 염려하고 있으니,'@ Immutable'을 알고 있어야합니다 : http://docs.jboss.org/hibernate/stable/annotations/reference/en/html /entity.html#entity-hibspecentity – david