首先:是的,我已经搜索并基本上尝试了可以在这里和其他Blogpost中找到的所有内容。 我是一名实习生,在升级所有依赖项并使其自身黯然失色之后,尝试使项目再次运行。特别是该项目已升级到64位和Junit5。因此,以前需要的常规项目结构等都可以正常工作,但是现在我必须将Junit4迁移到Junit5。
项目结构: 我有一个多程序包设置,其中包含我们的产品(一个eclipse应用程序),一个“ tests plugin”程序包,其中包含所有测试类,另外还有一个“ test.suite”程序包,其中包含一个测试套件,可以从测试套件中执行测试。以前的插件(以避免循环依赖)。测试套件软件包的pom包含所有构建逻辑,即:
- 安装产品
- 安装测试插件
- tycho应该触发测试。
作为视觉辅助,项目是这样的:
- 一些产品包
- 测试插件包(包含测试类)
- 测试套件包(包含“测试套件”和带有“ tycho”的pom和安装工作流程
问题: 由于Junit5,“测试套件包”中的“测试套件类”无法执行其他程序包中的测试,因为找不到Junit TestEngine(也无法修复)。尽管可以将“测试套件类”复制到“测试插件包”中,但工作正常,并且在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时,我发现测试类的错误“重复的类” ... 只要从片段中提取的“ compiler-plugin”在我的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>
我尝试不使用路径,也让它们指向已编译和未编译的目录。
最好的问候