Maven을 사용하여 Eclipse 애플리케이션에 플러그인으로 설치된 JUnit5 테스트를 실행하는 방법

사이먼

우선 : 예 저는 여기와 다른 Blogposts에서 찾을 수있는 모든 것을 검색하고 기본적으로 시도했습니다. 저는 인턴이고 모든 종속성을 업그레이드하고 자체적으로 이클립스를 수행 한 후 프로젝트를 다시 실행하려고합니다. 특히 프로젝트는 64 비트와 Junit5로 업그레이드되었습니다. 따라서 일반적인 필수 프로젝트 구조 등은 이전에 작동했지만 이제 Junit4를 Junit5로 마이그레이션해야합니다.

프로젝트 구조 : 우리 제품 (이클립스 애플리케이션), 모든 테스트 클래스를 포함하는 "테스트 플러그인"패키지, 그리고 실행을위한 테스트 스위트를 보유하는 추가 "test.suite"패키지가 포함 된 멀티 패키지 설정이 있습니다. (순환 종속성을 피하기 위해) 이전 플러그인에서 테스트합니다. 테스트 스위트 패키지의 pom에는 다음과 같은 모든 빌드 로직이 포함되어 있습니다.

  1. 제품 설치
  2. 테스트 플러그인 설치
  3. tycho는 테스트를 시작해야합니다.

시각 자료로서 프로젝트는 다음과 같습니다.

  • 일부 제품 패키지
  • 테스트 플러그인 패키지 (테스트 클래스 포함)
  • 테스트 스위트 패키지 ( "tycho"및 설치 워크 플로우가있는 "테스트 스위트"및 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사