2015-01-22 4 views
1

JUnit 테스트를 실행하는 데 문제가 있습니다. 프로젝트 리소스를 찾을 수 없어서 실패합니다.JUnit 테스트를 실행할 때 리소스 파일을 찾을 수 없습니다.

내 테스트는 URLClassLoader를 사용하여 필요한 모든 리소스를로드하는 서버를 시작합니다. 그렇지 않으면 내 프로젝트를 실행할 때 찾을 수없는 리소스에 아무런 문제가 없습니다. 이 문제는 내 JUnit 테스트를 실행하려고 할 때만 발생합니다.

이 같은 테스트 내 런타임 구성에서 인수로 파일 경로를 추가하는 시도

, 예 :

-cp .:/path/to/the/config/file 

그러나 차이는 없습니다.

도와주세요.

프로젝트 구조 : enter image description here

+0

JUnit 테스트는 어떻게 실행하고 있습니까? IDE에서 또는 gradle 또는 maven과 같은 것을 사용합니까? – Cuga

+0

안녕하세요, Eclipse에서 JUnit 4 테스트로 테스트를 실행합니다. – agiledevpro

+0

실행 프로그램 구성과 프로젝트 구조를 표시하십시오. – Jens

답변

2

기본 메이븐 테스트 경로 src/test/java, 그래서 당신의 검사 결과 해당 디렉토리에없는 경우, 당신은 <build> 내부 태그 <testSourceDirectory>pom.xml에서 테스트 경로를 정의해야합니다. maven-surefire-plugin도 포함해야합니다.

+0

당신이하고있는 일을 알지 못하면 ** testSourceDirectory를 변경하지 말고 ** 매우 합당한 이유가 있습니다 :-) –

+0

어떤 이유로? 예를 들어, 나는 tipical 소스/테스트 디렉토리'src/main/java' /'src/test/java'를 좋아하지 않는다. 모든 프로젝트에서'와' '값을'$ {project.basedir}/test'와'$ {project.basedir}/src'로 변경합니다. 나는 그것이 더 예쁘고 깨끗하다고 ​​생각한다. –

+1

Maven에 익숙한 사람들은 혼란스럽고 더 많은 언어와 플러그인 (src/main/webapp, src/main/site, src/main/scala)을 추가하기 시작하면 곤란을 겪을 것입니다. ...). 또한 리소스와 원본 폴더를 병합하면 리소스 처리가 더욱 복잡해집니다. http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout을 참조하십시오.html –

1

Maven의 규칙은 모든 Java 테스트 코드가 src/test/java 인 것입니다. 이것은 실수로 최종 제품에 테스트 코드가 포함되는 것을 방지하기위한 것입니다. 그래서 나는 네가 네 시험을 옮길 것을 제안한다.

리소스를로드하는 데 사용하는 코드가 표시되지 않으므로 버그가 있는지 여부를 알 수 없습니다. 하지만 /path/to/the/config/file은 잘못했을 가능성이 큽니다. /path/to/the/config이어야하며 Java getClass().getClassLoader().getResource("file")에서 말할 수 있습니다.

main(String[] args) { 
    File configFile = new File(args[0]).getAbsoluteFile(); 
    if(!configFile.exists()) throw new IllegalArgumentException("Unable to find config file: " + configFile); 
    ... 
} 

훨씬 더 간단한 오류 처리한다 :

는하지만 설정 파일을 지정하는 명령 행 인수를 사용하는 것이 좋습니다. 또한 테스트 및 이후에 다른 구성 파일을 사용할 수 있습니다.

관련 문제