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



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

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

  1. 安装产品
  2. 安装测试插件
  3. 蒂乔应该取消测试

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

  • 一些产品包
  • 测试插件包(包含测试类(
  • 测试套件包(包含"测试套件"和pom以及"tycho"和安装工作流

问题:自Junit5以来,"测试套件包"中的"测试套件类"无法执行其他包中的测试,因为找不到Junit测试引擎(也无法解决此问题(。不过,将"测试套件类"复制到"测试插件包"中效果良好,并且所有测试在Eclipse中作为插件测试执行时都能正常运行。当使用maven构建时,我通过命令行参数将maven指向一个"测试套件"。这在旧版本上有效,但现在我尝试在"测试插件包"中使用该套件,就像在eclipse中一样,但显然在这种情况下测试不运行。没有错误,只有0次运行,0次跳过0次失败0个错误,生成成功。

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

我已经尝试了我能找到的所有代码,但我无法让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.testssrc[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.testssrc[some dirs]tests</testClassesDirectory>
<includes>
<include>**/*Test.xtend</include>
</includes> 
</configuration>
</execution>
</executions>
</plugin>

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

向致以最良好的问候

我花了一个多月的时间在这上面,在发布后的第二天,我意外地找到了解决方案。。。但我不想抱怨

解决方案

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

  • 正如我所说,我们使用了一个命令行参数将maven指向测试套件。显然这已经没有必要了。我不知道这是否是junit5的事情,但当我没有提供任何到maven的测试类链接时,"osgi"环境中的测试类(它们被打包并作为插件安装(就全部找到了。

最新更新