2013-09-25 3 views
10

일부 단위 테스트를 작성하고 있습니다. 다른 프로그램을 호출하는 대신 클래스를 직접 호출하여 테스트를 실행하고있다. 문제는 이러한 클래스 중 일부는 상대 경로로 정의 된 데이터를 사용하므로 특정 디렉토리에서 프로그램을 시작해야한다는 것입니다. 자바에서 이것을 어떻게 바꿀 수 있습니까?Java 변경 파일 작업 디렉토리

예를 들어 내 단위 테스트는 C:/unittest에서 시작하며 필요한 데이터는 C:/OtherProject입니다.

File file = new File("data/data.csv"); 

같은 것이 C:/OtherProject/data/data.csv 대신 C:/unittest/data/data.csv을 읽을

File.setWorkingDir("C:/OtherProject"); 

그 방법 : 자바에서 이런 일이 가능하면 나는 다른 프로젝트의 코드를 수정하지 않습니다.

+0

testing-dir에서 테스트 목적으로 데이터 복사본을 가져 오는 것은 어떻습니까? – Fildor

+0

ASAIK, 사용할 수있는 것은 없습니다. –

+0

그런 이유로 사람들은 데이터베이스를 사용하여 동일한 데이터를 공유하고 같은 데이터를 관리합니다. –

답변

11

VolkerSeibt이 내 잘못을 지적했기 때문에 내 대답이 업데이트되었습니다. 좋은 캐치.

System.setProperty 통해 가능합니다. 당신은 "user.dir" 시스템 속성을 변경하여 현재 작업 디렉토리를 변경할 수 있습니다

System.setProperty("user.dir", "/foo/bar"); 

더 설명 http://www.javacodex.com/Files/Set-The-Current-Working-Directory를 참조하십시오.

+0

나는 꽤 많이 둘러 보았습니다. 나는 정적 인 클래스 'FileUtil'을 사용하여 작업 디렉토리를 저장하고 접근자를 가짐으로써 해결했으며, 함수 'loadFile'은 본래 작업 디렉토리를 전달 된 파일 경로 앞에 추가합니다. – Andy

+1

그게 잘못되었습니다. http://www.javacodex.com/Files/Set-The-Current-Working-Directory를 참조하십시오. 적어도 윈도우와 리눅스에서 작동합니다. –

+0

@VolkerSeibt : 잘 잡으세요. 나는 나의 대답을 업데이트했다. – Bucket

0

나는 작업 디렉토리가 jvm이 시작된 디렉토리 (java를 실행할 때 사용되는 디렉토리)에 의해 결정된다고 생각한다.