首页 > 解决方案 > 如何使用 Maven 运行作为插件安装到 Eclipse 应用程序中的 JUnit5 测试

问题描述

首先:是的,我已经搜索并基本上尝试了我可以在这里和其他博客文章中找到的所有内容。我是一名实习生,在我升级了所有依赖项和 eclipse 本身之后,我试图让一个项目再次运行。特别是该项目已升级到 64 位和 Junit5。所以一般所需的项目结构等以前工作过,但现在我必须将 Junit4 迁移到 Junit5。

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

  1. 安装产品
  2. 安装测试插件
  3. 第谷应该触发测试。

所以作为视觉辅助项目是这样的:

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

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

我已经尝试了所有我能找到的代码,但我无法让 maven 执行这些测试。最大的“成功”是: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>

我尝试不使用路径,并让它们指向已编译和未编译的目录。

最好的祝福

标签: eclipsemavenpom.xmljunit5tycho

解决方案


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

解决方案

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

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


推荐阅读