如何使用Maven运行JUnit5测试(作为插件安装到eclipse应用程序中)

如何使用Maven运行JUnit5测试(作为插件安装到eclipse应用程序中),eclipse,maven,pom.xml,junit5,tycho,Eclipse,Maven,Pom.xml,Junit5,Tycho,首先:是的,我已经搜索并基本上尝试了所有我能在这里和其他博客上找到的东西。 我是一名实习生,在升级了所有依赖项和eclipse本身之后,我试图让项目重新运行。特别是,该项目升级到64位和Junit5。因此,一般所需的项目结构等以前是有效的,但现在我必须将Junit4迁移到Junit5 项目结构: 我有一个多包设置,其中包含我们的产品(一个eclipse应用程序)、一个包含所有测试类的“tests-plugin”包和一个额外的“test.suite”包,其中包含一个测试套件来执行前一个插件的测试(

首先:是的,我已经搜索并基本上尝试了所有我能在这里和其他博客上找到的东西。 我是一名实习生,在升级了所有依赖项和eclipse本身之后,我试图让项目重新运行。特别是,该项目升级到64位和Junit5。因此,一般所需的项目结构等以前是有效的,但现在我必须将Junit4迁移到Junit5

项目结构: 我有一个多包设置,其中包含我们的产品(一个eclipse应用程序)、一个包含所有测试类的“tests-plugin”包和一个额外的“test.suite”包,其中包含一个测试套件来执行前一个插件的测试(以避免循环依赖)。测试套件包的pom包含所有构建逻辑,即:

  • 安装产品
  • 安装测试插件
  • 第谷应该启动测试
  • 因此,作为视觉辅助,该项目如下所示:

    • 一些产品包
    • 测试插件包(包含测试类)
    • 测试套件包(包含“测试套件”和带有“tycho”和安装工作流的pom
    问题: 由于Junit5,“测试套件包”中的“测试套件类”无法执行另一个包中的测试,因为找不到Junit测试引擎(也无法修复)。不过,将该“测试套件类”复制到“测试插件包”中可以正常工作,并且在Eclipse中作为插件测试执行时,所有测试都可以正常运行。 在使用maven构建时,我通过命令行参数将maven指向“测试套件”。这在旧版本中有效,但现在我尝试在“测试插件包”中使用该套件,因为该套件在eclipse中有效,但显然在这种情况下测试不运行。 无错误,仅0次运行,0次跳过0次失败0次错误,生成成功

    由于正在构建/安装/等的pom位于“测试套件”包中,我怀疑将测试套件移动到“测试插件”包需要额外的步骤才能工作。 我尝试了从pom指向新套件位置的各种路径(source/testwork.directory/testclassesdirectory…),但没有成功

    我尝试了我能找到的每一段代码,但我无法让maven执行这些测试。 最大的“成功”是: 当添加到我的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>
    
    
    org.eclipse.tycho
    第谷surefire插件
    ${tycho版本}
    ../xxx.tests\src\[某些目录]\tests
    **/*Test.xtend
    假的
    真的
    假的
    ${tycho.testArgLine}${memoryArgs}
    ${测试工作目录}
    org.apache.maven.plugins
    maven故障保护插件
    2.19.1
    集成测试
    验证
    ../xxx.tests\src\[某些目录]\tests
    **/*Test.xtend
    
    我尝试不使用路径,也让它们指向已编译和未编译的目录


    致以最诚挚的问候

    我花了一个多月的时间在这上面,仅仅在发帖后一天,我意外地找到了解决方案……但我并不抱怨

    解决方案

    • 在该插件的两个文件(*plugin.java、.project)中有一个拼写错误,编译器没有找到,只有手动搜索。它来自旧的重命名周期,但maven或eclipse没有抛出错误

    • 正如我所说,我们使用了一个命令行参数将maven指向测试套件。显然,这不再是必要的。我不知道这是否是junit5的事情,但是“osgi”环境中的测试类(它们打包并作为插件安装)在我没有提供任何指向maven的testclass链接的情况下都可以找到


    我花了一个多月的时间在这上面,仅仅在发布后一天,我就意外地找到了解决方案……但我宁愿不抱怨

    解决方案

    • 在该插件的两个文件(*plugin.java、.project)中有一个拼写错误,编译器没有找到,只有手动搜索。它来自旧的重命名周期,但maven或eclipse没有抛出错误

    • 正如我所说,我们使用了一个命令行参数将maven指向测试套件。显然,这不再是必要的。我不知道这是否是junit5的事情,但是“osgi”环境中的测试类(它们打包并作为插件安装)在我没有提供任何指向maven的testclass链接的情况下都可以找到


    添加了当前pom snipped,其中我还尝试使用maven故障保护插件ontop。添加了当前pom snipped,其中我还尝试使用maven故障保护插件ontop