Eclipse에서 Junit 런칭 구성을위한 작업 디렉토리를 기본값으로하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/119832

문제

Java 코드 (테스트 코드가 아님)는 현재 디렉토리에서 파일을 읽습니다. 즉, 코드를 실행할 때마다 작업 디렉토리를 올바르게 설정해야합니다.

Eclipse 내에서 Junit 테스트를 시작할 때 런칭 구성이 자동으로 생성됩니다. 문제는 해당 시작 구성의 작업 디렉토리가 항상 기본적으로 기본적으로 항상 잘못된 루트 프로젝트 디렉토리입니다. 테스트가 실패하고 시작 구성 대화 상자를 열고 작업 디렉토리를 변경하고 테스트를 다시 시작해야한다는 것입니다. 이것은 매우 성가신 일입니다. 단일 테스트 방법을 실행할 때도 같은 일이 발생합니다.

나는 이미 이것을 고려했다 :

  • 테스트 코드에서 현재 디렉토리 변경 - 설계별로 불가능합니다.
  • 파일을 열 때 부모 디렉토리 매개 변수를 전달하십시오. 너무 어렵습니다. 많은 장소에 영향을 미치기 때문입니다.
  • 사용 실행 구성을 복사하십시오 Eclipse의 기능은 이미 올바른 작업 디렉토리 세트가있는 기존의 새로운 런칭 구성을 생성합니다. "이 테스트 / 메소드를 Junit 테스트로 실행하는 것"을 호출하여 테스트 나 테스트 방법을 신속하게 시작하고 싶기 때문에 이것은 실제로 의미가 없습니다.

대체로 코드가 아니라 Eclipse의 책임 인 것 같습니다.

설정하는 방법이 있습니까? 기본 작업 디렉토리 새로 창조 된 모든 미래 주니트 런칭 구성?

도움이 되었습니까?

해결책 2

내가 알 수있는 한, Eclipse 3.4에서 향후 Junit Lunching 구성을위한 기본 작업 디렉토리를 변경하는 방법은 없습니다. 이 문제도 그랬습니다 버그로보고되었습니다 Eclipse 버그 데이터베이스에서.

그러나 아이디어에서 가능합니다. 거기 있습니다 기본값을 편집합니다 각 시작 구성 유형에 대한 모든 종류의 기본값을 별도로 설정하기위한 버튼.

다른 팁

이것은 주관적인 답변입니다.

테스트를 잘못하고 있다고 생각합니다. 상대적 또는 완전한 경로를 사용하여 Junit의 파일을로드해서는 안되며 대신 프로젝트의 리소스로 (빌드 경로에 추가)를 자원으로로드하십시오. 주니트 테스트에서. 이런 식으로 파일 시스템에서 무언가가 변경되면 누군가가 다른 파일 시스템이나 IDE를 사용하지만 여전히 빌드 경로 (소스 폴더)에있는 것이 문제가되지 않을 것입니다.

이것이 당신이 의미하는지 확실하지 않지만 실제로 변경하고 싶다면 실행 구성 옵션으로 이동합니다 -> junit -> arguments 탭, 하단 (Eclipse 3.4)에서 작업 디렉토리가 표시되고 '기타'를 클릭하고 클릭하십시오. 거기에서 변경하십시오.

Eclipse 3을 사용하면 작업 디렉토리를 설정할 수 있습니다. 실행/디버그 구성 -> 인수 탭으로 이동하십시오. 작업 디렉토리에서 "기타"를 선택하고 테스트의 루트를 입력하십시오.

나는 이것을 할 수있는 가능성을 찾지 못했지만 당신이 할 수있는 일은 다음과 같습니다.

getClass (). getResourceasstream (filename);

getClass (). getClassLoader (). getResourCeasStream (filename);

이 방법은 클래스 경로에서 리소스를 찾습니다. 첫 번째는 클래스의 위치와 관련이 있고, 두 번째는 클래스 경로 "루트 항목"과 관련이 있습니다. 예를 들어 프로젝트 루트 디렉토리를 클래스 경로에 추가 할 수 있습니다.

그러나 파일에도 쓰고 싶다면 작동하지 않습니다.

테스트가 현재 작업 디렉토리에 의존하는 경우 해당 작업 디렉토리를 올바르게 설정하고 해당 디렉토리를 지적하도록 테스트하도록 클래스를 구성하는 것이 테스트의 책임이라고 생각합니다.

대부분의 테스트에 대한 슈퍼 클래스가있는 경우 그 안에 상수를 작성하십시오. 또는 : 대부분의 테스트에 대한 슈퍼 클래스가있는 경우 @before 설정 방법을 작성하십시오. 또는 : 대부분의 테스트에 대한 슈퍼 클래스가없는 경우 테스트 코드베이스의 일부 클래스에 상수를 작성하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top