2010-09-16 1 views
5

우리 애플리케이션에서 오래된 클래스를 테스트하기 위해 일부 Junit 테스트를 작성하려고합니다. 이 코드는 (번역을 위해) ResourceBundle을로드하려하지만 실패합니다. 문제는 classpath와 관련된 것 같아요.하지만 알아낼 수는 없어요.junit 테스트 중에 ResourceBundle을로드 할 수 없습니다.

코드는/src에 배치되고 테스트는/test에 있습니다. ResourceBundle은/src와 관련된 기본 이름 (예 : "foo/bar/baz")이 주어지면로드됩니다.

내 테스트는 앱 자체와 동일한 클래스 경로를 사용하므로 번들을 찾지 못하는 이유를 알 수 없습니다.

무엇이 잘못 되었습니까?

+0

테스트는'/ test' 디렉토리에 있습니까? – Asaph

+0

ResourceBundles을 절대 경로로 임시 변경하는 경우 문제가 해결 되나요? – Asaph

답변

6

리소스는 원본 폴더에서가 아니라 클래스 디렉터리에서 확인됩니다. 리소스 파일이 출력 폴더 (bin, target/classes 등)에 복사됩니까? 그렇지 않은 경우 클래스에서 찾을 수 없습니다.

+0

D' uh! 물론, 내 테스트는 앱보다 다른 출력 디렉토리를 사용한다. 이것은 분명히 그 것이다. – fiskeben

5

maven을 사용하는 경우 일반적으로 모든 종류의 등록 정보 파일과 리소스 번들을 src/main/resources/이라는 별도의 원본 폴더에 넣으려고합니다.

단위 테스트에서 값을 재정의하려면 중복 소품을 추가 할 수 있습니다. 파일을 src/test/resources 원본 폴더에 저장하십시오.