여기 내가하려는 일이 있습니다. 웹 응용 프로그램에서 JPA 지속성을 사용하고 있지만 컨테이너 외부에서 실행하려는 단위 테스트 집합이 있습니다.JPA persistence.xml 클래스 경로가 있습니까?
내 기본 응용 프로그램의 META_INF
폴더에 내 기본 내용이 persistence.xml
이며 컨테이너 (Glassfish)에서 훌륭하게 작동합니다.
test-classes
디렉토리의 META-INF
폴더에 두 번째 persistence.xml
을 넣었습니다. 여기에는 테스트 용으로 만 사용하려는 별도의 지속성 단위가 들어 있습니다. 이클립스에서는이 폴더를 기본 폴더보다 classpath에서 더 높게 설정했는데 제대로 작동하는 것 같습니다.
이제 명령 줄에서 직접 maven 빌드를 실행하고 단위 테스트를 실행하려고하면 persistence.xml
무시가 무시됩니다. maven의 META-INF
폴더에있는 override가 test-classes
디렉토리를 생성하고이 파일을 사용하기 위해 maven 테스트를 예상했지만 실제로는 그렇지 않습니다. 비슷한 방식으로 구현 된 My Spring 테스트 구성 재정의가 효과적입니다.
persistence.xml
이 클래스 경로를 통해 위치하는지 혼란 스럽습니다. 그렇다면, 내 override는 maven surefire 플러그인 explains "[테스트 클래스 디렉토리]가 테스트 클래스 경로의 시작 부분에 포함되기 때문에 스프링 오버라이드처럼 작동해야합니다".
persistence.xml
파일의 위치를 잘못 예상 했습니까?
제품 persistence.xml
파일에 두 번째 지속성 장치를 만들 수 있지만 테스트 구성을이 프로덕션 파일에 배치하는 것이 더럽습니다. 내 목표를 달성하는 방법에 대한 다른 아이디어는 환영합니다.
확인 - 의견에 감사드립니다. 적어도 나는 완전히 밖으로 나가고있는 것을하지 않는다는 것을 안다. – Vinnie
OK - 이제 작동 중입니다. 각 퍼시스턴스 유닛을 같은 이름의 다른 파일에 명명하기 전에. 테스트 지속성 단위를 다른 이름으로 변경했습니다. 그것은 나에게 맞는 것 같지 않지만 어쩌면 이것이 내가 알지 못했던 제한이다. – Vinnie
필자는 이전에이 코드를 작성하여 코드를 파헤 쳤고, 테스트 persistence.xml 파일에도 동일한 (비 테스트) 지속성 단위가 정의되었지만 단위 테스트 용으로 정의 된 다른 지속성 단위를 사용했습니다. 그것은 아마도 필요하지는 않았다. 엔티티 관리자를 만들 때 단위 테스트에서 테스트 지속성 단위를 사용한다고 생각합니다. –