第谷集成测试不是 运行(但单元测试是..)

Tycho integration test are not run (but Unit tests are..)

我有一个带有插件和片段的多模块项目来测试这个插件。 构建是通过 maven/tycho 完成的。 Maven v.3.8.4 和 Tycho v2.6.0.

在片段中我有 3 个单元和 1 个集成测试,在测试文件夹中:

test
   ├── CoreTestConstants.java
   ├── CoreUtils2Test.java
   ├── CoreUtils3Test.java
   ├── CoreUtilsIT.java
   └── CoreUtilsTest.java

这是片段插件的pom:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>com.tycho.rcp.core.test</artifactId>
     <version>0.2.4-SNAPSHOT</version>
     <packaging>eclipse-test-plugin</packaging>

     <parent>
          <groupId>com.tycho</groupId>
          <artifactId>com.tycho.mps</artifactId>
          <version>0.3.4-SNAPSHOT</version>
          <relativePath>..</relativePath>
     </parent>

     <build>
          <sourceDirectory>src</sourceDirectory>
          <plugins>
               <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-surefire-plugin</artifactId>
                    <executions>
                         <execution>
                              <id>it-test</id>
                              <phase>integration-test</phase>
                              <goals>
                                   <goal>integration-test</goal>
                              </goals>
                         </execution>
                    </executions>

                    <configuration>
                         <testSourceDirectory>src</testSourceDirectory>
                         <testClassesDirectory>target/classes</testClassesDirectory>

                         <!-- workspace directory -->
                         <osgiDataDirectory>${mas.test.workspace}</osgiDataDirectory>

                         <!-- system properties -->
                         <systemProperties>
                              <mas.test.archive_location>${mas.test.archive_location}</mas.test.archive_location>
                         </systemProperties>

                         <!-- add slf4j implementation dependency from Orbit -->
                         <dependencies>
                              <dependency>
                                   <groupId>org.eclipse.orbit.bundles</groupId>
                                   <artifactId>ch.qos.logback.slf4j</artifactId>
                                   <version>1.1.2</version>
                                   <type>eclipse-plugin</type>
                              </dependency>
                         </dependencies>
                    </configuration>
               </plugin>
          </plugins>
     </build>
</project>

在父项目的pluginManagement中启用了tycho-surefire-plugin:

<plugin>
   <groupId>org.eclipse.tycho</groupId>
   <artifactId>tycho-surefire-plugin</artifactId>
   <version>${tycho.version}</version>
</plugin>

3个单元测试正确执行,但IT测试从来没有运行! 这是输出的相关部分,当我在片段项目中 运行 mvn clean verify 时:

[INFO] --- tycho-surefire-plugin:2.6.0:test (default-test) @ com.marchesini.mas.rcp.core.test ---
[INFO] Executing Test Runtime with timeout 0, logs (if any) will be placed at: /home/gionata/runtime-EclipseApplication/.metadata/.log
[INFO] Command line:
    [/usr/lib/jvm/java-11-openjdk-11.0.9.11-0.fc31.x86_64/bin/java, -Dosgi.noShutdown=false, -Dosgi.os=linux, -Dosgi.ws=gtk, -Dosgi.arch=x86_64, -Dosgi.clean=true, -Dmas.test.archive_location=/home/gionata/ARCHIVIO.BLK, -jar, /home/gionata/.m2/repository/p2/osgi/bundle/org.eclipse.equinox.launcher/1.5.100.v20180827-1352/org.eclipse.equinox.launcher-1.5.100.v20180827-1352.jar, -data, /home/gionata/runtime-EclipseApplication, -install, /home/gionata/Workspace_Eclipse_Maven/MAS/MPS/com.marchesini.mas.rcp.core.test/target/work, -configuration, /home/gionata/Workspace_Eclipse_Maven/MAS/MPS/com.marchesini.mas.rcp.core.test/target/work/configuration, -application, org.eclipse.tycho.surefire.osgibooter.headlesstest, -testproperties, /home/gionata/Workspace_Eclipse_Maven/MAS/MPS/com.marchesini.mas.rcp.core.test/target/surefire.properties]
Running com.marchesini.mas.rcp.core.test.CoreUtils2Test
Logger launcher start...4
2022-02-05 18:36:11,221 DEBUG [main]: CHECKSUM 2 = 340351cde832c00505c88f3fe1a962d4
2022-02-05 18:36:11,442 DEBUG [main]: Workspace = /home/gionata/runtime-EclipseApplication
2022-02-05 18:36:11,442 DEBUG [main]: Archive location = /home/gionata/ARCHIVIO.BLK
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.569 s - in com.marchesini.mas.rcp.core.test.CoreUtils2Test
testCoreUtils2(com.marchesini.mas.rcp.core.test.CoreUtils2Test)  Time elapsed: 0.226 s
Running com.marchesini.mas.rcp.core.test.CoreUtilsTest

#################################################################################
REPORT
CHECKSUM = 340351cde832c00505c88f3fe1a962d4

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in com.marchesini.mas.rcp.core.test.CoreUtilsTest
testCoreUtils(com.marchesini.mas.rcp.core.test.CoreUtilsTest)  Time elapsed: 0.002 s
Running com.marchesini.mas.rcp.core.test.CoreUtils3Test
Logger launcher start...4
2022-02-05 18:36:11,537 DEBUG [main]: CHECKSUM 3 = 340351cde832c00505c88f3fe1a962d4
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 s - in com.marchesini.mas.rcp.core.test.CoreUtils3Test
testCoreUtils3(com.marchesini.mas.rcp.core.test.CoreUtils3Test)  Time elapsed: 0.001 s

Results:

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

[INFO] All tests passed!
[INFO] 
[INFO] --- tycho-surefire-plugin:2.6.0:integration-test (it-test) @ com.marchesini.mas.rcp.core.test ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

执行 it-test 根本 运行 什么都没有!我一直在浪费时间在这上面....

感谢您的帮助。

首先,如果您遵循默认约定,则不应添加任何特定配置。此外,tycho surefire 插件不会读取 <testSourceDirectory>src</testSourceDirectory> 等参数。此外,无需为您的需要创建产品或功能。它不工作的原因是因为一个错误: https://github.com/eclipse/tycho/issues/643

附带说明,我更新了发布说明 https://github.com/eclipse/tycho/pull/641 试图更好地记录新目标背后的基本原理(但是,由于错误,它再次不起作用)