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

问题描述 投票:1回答:1

开头:是的,我已经搜索并基本上尝试了在这里以及其他Blogpost中可以找到的所有内容。我是一名实习生,在升级所有依赖项并使其自身黯然失色之后,尝试使项目再次运行。特别是该项目已升级到64位和Junit5。因此,一般所需的项目结构等以前都可以使用,但是现在我必须将Junit4迁移到Junit5。

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

  1. 安装产品
  2. 安装测试插件
  3. 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>

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

最诚挚的问候

eclipse maven pom.xml junit5 tycho
1个回答
0
投票

我在此上花了一个多月,而在发布后仅一天,我偶然找到了解决方案……但我宁可不抱怨

解决方案

  • 该插件中的两个文件(* plugin.java,.project)内部是一个错字,编译器没有发现错字,只能通过手动搜索找到。它来自旧的重命名周期,但是Maven或Eclipse并没有引发错误...

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

© www.soinside.com 2019 - 2024. All rights reserved.