@Steve C와 @ ashosborne1이 제공하는 옵션에는 차이점과 제약이 있습니다. 그들은 반드시 명시되어야한다고 믿습니다.
언제 사용할 수 File resourcesDirectory = new File("src/test/resources");
있습니까?
- 1 테스트가 maven을 통해서만 실행되지만 IDE를 통해서는 실행되지 않을 때.
- 2.1 테스트가 maven 또는
- 2.2 IDE를 통해 하나의 프로젝트 만 IDE로 가져옵니다. (필자는“가져온”용어를 사용하여 IntelliJ IDEA에 사용됩니다. 이클립스 사용자는 maven 프로젝트도 가져옵니다.) 이것은 작동합니다. IDE를 통해 테스트를 실행할 때 작업 디렉토리가 프로젝트와 동일합니다.
- 3.1 테스트가 maven 또는
- (당신은, 당신은 일반적으로 여러 프로젝트를 가져 학생이 아닌 경우) IDE, 하나 개 이상의 프로젝트를 통해 3.2 IDE로 가져, 그리고 당신이 IDE를 통해 테스트를 실행하기 전에, 당신은 수동으로 구성하여 테스트를 위해 작업 디렉토리. 해당 작업 디렉토리는 테스트가 포함 된 가져온 프로젝트를 참조해야합니다. 기본적으로 IDE로 가져온 모든 프로젝트의 작업 디렉토리는 하나입니다. 아마 그것은
IntelliJ IDEA
단지 제한 이지만 모든 IDE가 이와 같이 작동한다고 생각합니다. 그리고 수동으로 수행해야하는이 구성은 전혀 좋지 않습니다. 서로 다른 maven 프로젝트에 존재하지만 하나의 큰 "IDE"프로젝트로 가져 오는 여러 테스트를 사용하여이를 기억하고 긴장을 풀고 작업에서 즐거움을 얻지 못하게합니다.
@ ashosborne1에서 제공하는 솔루션 (개인적으로 선호하는 솔루션)에는 테스트를 실행하기 전에 수행해야하는 2 가지 추가 요구 사항이 필요합니다. 이 솔루션을 사용하는 단계 목록은 다음과 같습니다.
“src / test / resources /”안에 테스트 폴더 (“teva”)와 파일 (“readme”)을 만듭니다 :
src / test / resources / teva / readme
테스트 폴더에 파일을 작성해야합니다. 그렇지 않으면 작동하지 않습니다. Maven은 빈 폴더를 무시합니다.
을 통해 프로젝트를 한 번 이상 빌드하십시오 mvn clean install
. 테스트도 실행합니다. 전체 프로젝트를 빌드하지 않고 maven을 통해 테스트 클래스 / 메소드 만 실행하면 충분할 수 있습니다. 결과적으로 테스트 리소스가 테스트 클래스에 복사됩니다. 경로는 다음과 같습니다.target/test-classes/teva/readme
그 후에는 @ ashosborne1에서 이미 제공 한 코드를 사용하여 폴더에 액세스 할 수 있습니다 (죄송합니다.이 항목 목록 내 에서이 코드를 올바르게 편집 할 수 없습니다).
public static final String TEVA_FOLDER = "teva"; ...
URL tevaUrl = YourTest.class.getClassLoader().getResource(TEVA_FOLDER);
String tevaTestFolder = new File(tevaUrl.toURI()).getAbsolutePath();
이제 원하는만큼 IDE를 통해 테스트를 실행할 수 있습니다. mvn clean을 실행할 때까지 대상 폴더가 삭제됩니다.
IDE를 통해 테스트를 실행하기 전에 테스트 폴더 내에 파일을 작성하고 maven을 처음으로 실행해야합니다. 이 단계가 없으면 IDE에서 테스트 리소스를 만든 다음 IDE를 통해서만 테스트를 작성하고 실행하면 오류가 발생합니다. mvn을 통해 테스트를 실행하면 테스트 리소스가 target / test-classes / teva / readme에 복사되고 클래스 로더가 액세스 할 수있게됩니다.
IDE에서 하나 이상의 메이븐 프로젝트를 가져와야하는 이유와 왜 그렇게 많은 복잡한 것들이 필요한지 묻습니다. 저에게 주요 동기 중 하나는 IDA 관련 파일을 코드에서 멀리 유지하는 것입니다. 먼저 IDE에서 새 프로젝트를 만듭니다. IDE 관련 파일을 보유한 가짜 프로젝트입니다. 그런 다음 기존 Maven 프로젝트를 가져옵니다. 가져온 프로젝트에서 IDEA 파일을 원본 가짜 프로젝트에만 보관하도록 강요합니다. 결과적으로 코드 중에 IDE 관련 파일이 표시되지 않습니다. SVN은 그것들을 보지 않아야합니다 (그러한 파일을 무시하도록 svn / git을 구성하도록 제안하지 마십시오). 또한 매우 편리합니다.