우선 : 예 저는 여기와 다른 Blogposts에서 찾을 수있는 모든 것을 검색하고 기본적으로 시도했습니다. 저는 인턴이고 모든 종속성을 업그레이드하고 자체적으로 이클립스를 수행 한 후 프로젝트를 다시 실행하려고합니다. 특히 프로젝트는 64 비트와 Junit5로 업그레이드되었습니다. 따라서 일반적인 필수 프로젝트 구조 등은 이전에 작동했지만 이제 Junit4를 Junit5로 마이그레이션해야합니다.
프로젝트 구조 : 우리 제품 (이클립스 애플리케이션), 모든 테스트 클래스를 포함하는 "테스트 플러그인"패키지, 그리고 실행을위한 테스트 스위트를 보유하는 추가 "test.suite"패키지가 포함 된 멀티 패키지 설정이 있습니다. (순환 종속성을 피하기 위해) 이전 플러그인에서 테스트합니다. 테스트 스위트 패키지의 pom에는 다음과 같은 모든 빌드 로직이 포함되어 있습니다.
시각 자료로서 프로젝트는 다음과 같습니다.
문제점 : Junit5 이후 "테스트 스위트 패키지"의 "테스트 스위트 클래스"는 Junit TestEngine을 찾을 수 없기 때문에 다른 패키지의 테스트를 실행할 수 없습니다 (그것도 수정할 수 없음). "테스트 스위트 클래스"를 "테스트 플러그인 패키지"에 복사하면 잘 작동하며 Eclipse에서 플러그인 테스트로 실행될 때 모든 테스트가 제대로 실행됩니다. maven 빌드를 사용할 때 명령 줄 인수를 통해 maven을 "테스트 스위트"로 지정합니다. 이것은 이전 버전에서 작동했지만 이제는 이클립스에서 작동하는 "테스트 플러그인 패키지"에서 제품군을 사용하려고하지만 분명히이 경우에는 테스트가 실행되지 않습니다. 오류 없음, 실행 0 개, 건너 뛰기 0 개 실패 0 개 오류, 빌드 성공.
빌드 / 설치 등의 pom이 "테스트 스위트"패키지에 있으므로 테스트 스위트를 "테스트 플러그인"패키지로 이동하려면 추가 단계가 필요하다고 생각했습니다. 나는 pom에서 새로운 스위트 위치까지 다양한 경로 (source / test-work.directory/testclassesdirectory ...)를 가리 키려고 시도했지만 성공하지 못했습니다.
나는 내가 찾을 수있는 모든 코드를 시도했지만 그 테스트를 실행할 수는 없었다. 가장 큰 "성공"은 다음과 같습니다 : https://mukis.de/pages/simple-junit-tests-with-tycho-and-surefire/ 내 pom에 스니핑을 추가 할 때 "중복 된 클래스"라는 오류가 발생했습니다. 테스트 클래스 ... 스니핑 된 "컴파일러-플러그인"이 내 pom 안에있는 한 나는 중복을 가지고 있었는데, 그것을 제거하면 아무것도 나에게주지 않았다. Maven 컴파일러에서 "compilerarguments"를 통해 중복을 비활성화하려고 시도해도 작동하지 않았습니다.
내 문제가 모호하고 설명과 기술이 약하다는 것을 알고 있지만 어떻게해야할지에 대한 힌트 / 토론 또는 예가 있으면 감사합니다. 주어진 프로젝트 구조를 고려할 때 일반적으로 tycho (내 애플리케이션에 플러그인으로 설치된 통합 테스트 실행)를 구성하는 방법은 무엇입니까?
편집 : 이것은 테스트 스위트 pom의 최신 시도입니다.
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<testClassesDirectory>../xxx.tests\src\[some dirs]\tests</testClassesDirectory>
<includes>
<include>**/*Test.xtend</include>
</includes>
<failIfNoTests>false</failIfNoTests>
<useUIHarness>true</useUIHarness>
<useUIThread>false</useUIThread>
<argLine>${tycho.testArgLine} ${memoryArgs}</argLine>
<work>${test-work-directory}</work>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<testClassesDirectory>../xxx.tests\src\[some dirs]\tests</testClassesDirectory>
<includes>
<include>**/*Test.xtend</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
나는 경로없이 시도했고 또한 그들이 컴파일되고 컴파일되지 않은 디렉토리를 가리 키도록했다.
친애하는
나는 이것에 대해 한 달 이상을 보내고 게시 한 후 하루 만에 우연히 해결책을 찾았지만 불평하지 않습니다.
해결책 :
해당 플러그인의 두 파일 (* plugin.java, .project) 내부에는 컴파일러에서 찾을 수없는 오타가 있었지만 수동 검색으로 만 발견되었습니다. 오래된 이름 변경주기에서 왔지만 maven 또는 eclipse는 오류를 던지지 않았습니다 ...
내가 말했듯이 명령 줄 매개 변수를 사용하여 maven이 테스트 스위트를 가리 키도록했습니다. 분명히 그것은 더 이상 필요하지 않습니다. junit5인지는 모르겠지만 "osgi"환경의 테스트 클래스 (플러그인으로 압축되어 설치됨)는 내가 maven에 대한 테스트 클래스 링크를 제공하지 않았을 때 모두 발견되었습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다