2012-02-16 4 views
2

내가 지금처럼 이클립스에서 개발중인 응용 프로그램에서 JUnit 테스트를 실행하려고 : 테스트 케이스가 필요로하는 경우실행 JUnit 테스트

JUnitCore junitCore = new JUnitCore(); 
ClassLoader cl = Main.class.getClassLoader(); 
Class<?> test = cl.loadClass("test.TestCase1"); 
Result r = junitCore.run(test); 

이 잘 실행하지만, 일부 파일을 사용하면 FileNotFoundException이됩니다. Eclipse 프로젝트에서 동일한 테스트를 실행하면 테스트에 그런 오류가 없다. 내 JVM의 작업 디렉토리 (user.dir 속성에 정의 됨)가 Eclipse 프로젝트와 동일하지 않기 때문에 이것이라고 생각합니다. 내가 아는 한, 실행중인 JVM에서 user.dir을 변경할 수 없습니다.

이 동작을 변경하려면 어떻게해야합니까? Eclipse 프로젝트와 동일한 작업 디렉토리로 새 JVM을 시작하는 유일한 방법입니까? 그렇다면 어떻게 할 수 있습니까? Ant와 같은 도구를 사용하지 않는 것이 좋습니다.

편집 : 여기 이클립스 프로젝트에 전달하는 테스트의 예입니다, 나는이 프로젝트의 외부 프로그램을 실행할 때 FileNotFoundException를 생성

@Test 
public void test() throws Exception { 
    FileInputStream fstream = new FileInputStream("test1.txt"); 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    assertEquals("file content", br.readLine()); 
} 
+0

파일을로드하는 코드를 가장 잘 보여줄 수 있습니까? – Anton

+0

@Umar 파일을로드하는 테스트의 예를 의미합니까? 나는 너를 위해 그것을 편집 할 것이다. – aperez

+0

궁금한 점이 있으십니까? 왜 이클립스에서 기본적으로 junit 플러그인을 가지고있을 때 junit을 실행하는 응용 프로그램을 작성 하시겠습니까? –

답변

0

이 코드를 시도

new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("filename"))); 

파일이 Java 클래스와 같은 디렉토리에 있으면로드해야합니다.

이 경우 업데이트

, 당신이 당신의 JUnits을 실행할 때 작업 디렉터리를 지정하려고하는 것은

-Duser.dir=somedir 
+0

답변 해 주셔서 감사합니다. 불행히도 테스트를 포함하여 프로젝트 소스를 변경할 수 없습니다. – aperez

0

당신의 JUnit 테스트에 현재 디렉토리를 검색하는 시도하고 탐색 새로운 파일을 생성 테스트 test1.txt로

String currentDirectory = new File("").getAbsolutePath(); 

FileInputStream fstream = new FileInputStream(currentDirectory+"\\XYZ\\test1.txt"); 
관련 문제