Java Eclipse执行集成测试,但Maven不执行

Java Eclipse执行集成测试,但Maven不执行,java,maven,maven-failsafe-plugin,Java,Maven,Maven Failsafe Plugin,我们的Maven构建在“src/test/java”(名为“*test.java”)中有很多单元测试,它们在Eclipse和Maven构建中都可以正常工作 我们在“src/test/java”(名为“*IT.java”)中也有一系列集成测试,这些测试在Eclipse中可以正常工作,但我们不在Maven中运行它们,因为测试的性质使它们除了手动使用之外不可靠 我现在已经编写了一个可靠的,我希望在CI构建中从mvn命令行执行的。到目前为止,我还不知道如何让故障保护执行它 我注意到了a中的建议,并确保遵

我们的Maven构建在“src/test/java”(名为“*test.java”)中有很多单元测试,它们在Eclipse和Maven构建中都可以正常工作

我们在“src/test/java”(名为“*IT.java”)中也有一系列集成测试,这些测试在Eclipse中可以正常工作,但我们不在Maven中运行它们,因为测试的性质使它们除了手动使用之外不可靠

我现在已经编写了一个可靠的,我希望在CI构建中从mvn命令行执行的。到目前为止,我还不知道如何让故障保护执行它

我注意到了a中的建议,并确保遵循了这些指导原则(我已经使用了正确的位置和命名模式),但当我运行“failsafe:integration test”时,仍然会得到“Tests run:0”

以下是pom的省略版本:

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        ...
    </parent>
    <artifactId>usl-features-install</artifactId>
    <name>usl-features-install</name>
    <url>http://maven.apache.org</url>
    <packaging>bundle</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                            ...
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
更新

参考提供的答案,我最初添加了以下执行块(和版本):

更新

我试着用“-X”运行mvn。当然,它生成了很多输出,但以下是它在尝试运行It测试时显示的内容:

[DEBUG] Forking command line: cmd.exe /X /C ""C:\Program Files\Java\jdk1.8.0_102\jre\bin\java" -javaagent:C:\\Users\\<myuid>\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.8\\org.jacoco.agent-0.7.8-runtime.jar=destfile=C:\\users\\<myuid>\\git\\oce_usl\\usl-parent\\usl-features-install\\target\\jacoco.exec -jar C:\cygwin64\tmp\surefire29734070406705707\surefirebooter6462732870353032119.jar C:\cygwin64\tmp\surefire29734070406705707 2017-10-25T15-17-49_742-jvmRun1 surefire1801590010194716332tmp surefire_05587249170077752672tmp"
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.20.1:verify (default) @ usl-features-install ---
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-failsafe-plugin:2.20.1:verify from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-failsafe-plugin:2.20.1, parent: sun.misc.Launcher$AppClassLoader@5c647e05]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-failsafe-plugin:2.20.1:verify' with basic configurator -->
[DEBUG]   (s) basedir = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install
[DEBUG]   (s) reportsDirectory = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\surefire-reports
[DEBUG]   (s) skip = false
[DEBUG]   (f) summaryFile = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\failsafe-reports\failsafe-summary.xml
[DEBUG]   (s) testClassesDirectory = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\test-classes
[DEBUG]   (s) testFailureIgnore = false
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@6bf13698
[DEBUG] -- end configuration --
[DEBUG] Failsafe report directory: C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\surefire-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[DEBUG]Forking命令行:cmd.exe/X/C“C:\Program Files\Java\jdk1.8.0\u 102\jre\bin\Java"-javaagent:C:\\Users\\\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.8\\org.jacoco.agent-0.7.8-runtime.jar=destfile=C:\\Users\\\\git\\oce\u usl\\usl parent\\usl features install\\target\\jacoc.exec-jar C:\cygwin64\tmp\surefire29734070406705707\sureforebooter6462732870353032119.jar:\cygwin64\tmp\surefire2970707070707070707072017-10-25T15-17-49_742-jvmRun1 surefire1801590010194716332tmp surefire_05587249170077752672tmp“
[信息]
[信息]结果:
[信息]
[信息]测试运行:0,失败:0,错误:0,跳过:0
[信息]
[信息]
[信息]---maven故障保护插件:2.20.1:验证(默认)@usl功能安装---
[调试]配置mojo org.apache.maven.plugins:maven故障保护插件:2.20.1:从插件领域ClassRealm验证[plugin>org.apache.maven.plugins:maven故障保护插件:2.20.1,父级:sun.misc.Launcher$AppClassLoader@5c647e05]
[调试]使用基本配置程序-->
[DEBUG](s)basedir=C:\users\\git\oce\u usl\usl parent\usl功能安装
[DEBUG](s)reportsDirectory=C:\users\\git\oce\u usl\usl parent\usl features install\target\surefire reports
[DEBUG](s)skip=false
[DEBUG](f)summaryFile=C:\users\\git\oce\u usl\usl parent\usl features install\target\failsafe reports\failsafe-summary.xml
[DEBUG](s)testClassesDirectory=C:\users\\git\oce\u usl\usl parent\usl features install\target\test classes
[DEBUG](s)testFailureIgnore=false
[DEBUG](f)session=org.apache.maven.execution。MavenSession@6bf13698
[调试]--结束配置--
[调试]故障保护报告目录:C:\users\\git\oce\u usl\usl parent\usl features install\target\surefire报告
[信息]------------------------------------------------------------------------
[信息]生成失败
这表明它正在使用我运行单元测试所需的jacoco代理。我不需要它进行集成测试。我不确定如何关闭它,或者这是否是一个因素

更新

我想我已经找到了一个“解决办法”,或者至少是一个中期解决办法

我觉得“NoSuchMethodError”问题可能是导致这种情况的关键,因此我在谷歌上搜索了类似的事件,并为surefire找到了以下问题:

因此,我所做的是将故障保护版本从2.20.1更改为2.19.1(这显然导致使用相同版本的surefire),现在它不会以这种方式失败

然而,我现在看到另一个偶尔出现的问题是“命令NOOP意外读取长度为4的无效数据”。“(),这似乎产生了一个建议,进一步后退,以确保2.18.1


再加上这个测试是一个PaxExam测试,它会带来其他的复杂性和混乱。我想我会得出一个结论,修复比问题更糟糕。

您是否尝试过通过
mvn clean verify
在命令行上运行?此外,您是否像文档中所述那样绑定到了生命周期n通过处决


[...]
org.apache.maven.plugins
maven故障保护插件
2.20.1
集成测试
验证
[...]

我认为您的问题可能是由以下几方面引起的:父pom中的配置与项目中的配置冲突(可能导致故障保护插件运行两次),以及依赖项冲突(可能导致NoSuchMethodError,因为同一依赖项在类路径上有多个版本或类似的内容)。请在不删除依赖项、工件和插件配置的情况下提供整个pom及其父项,以便我们提供帮助;)
            <version>2.20.1</version>
            <executions>
                <execution>
                    <goals>
                        <!-- <goal>verify</goal> -->
                        <goal>integration-test</goal>
                    </goals>
                </execution>
            </executions>
[INFO] --- maven-failsafe-plugin:2.20.1:integration-test (default) @ usl-features-install ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.20.1:verify (default) @ usl-features-install ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.968 s
[INFO] Finished at: 2017-10-25T10:41:26-07:00
[INFO] Final Memory: 35M/498M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.20.1:verify (default) on project usl-features-install: There are test failures.
[ERROR] 
[ERROR] Please refer to C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\failsafe-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
java.lang.NoSuchMethodError: org.apache.maven.surefire.report.RunListener.testSetStarting(Lorg/apache/maven/surefire/report/ReportEntry;)V
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:235)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
    at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:373)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:334)
    at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:119)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:407)
[DEBUG] Forking command line: cmd.exe /X /C ""C:\Program Files\Java\jdk1.8.0_102\jre\bin\java" -javaagent:C:\\Users\\<myuid>\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.8\\org.jacoco.agent-0.7.8-runtime.jar=destfile=C:\\users\\<myuid>\\git\\oce_usl\\usl-parent\\usl-features-install\\target\\jacoco.exec -jar C:\cygwin64\tmp\surefire29734070406705707\surefirebooter6462732870353032119.jar C:\cygwin64\tmp\surefire29734070406705707 2017-10-25T15-17-49_742-jvmRun1 surefire1801590010194716332tmp surefire_05587249170077752672tmp"
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.20.1:verify (default) @ usl-features-install ---
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-failsafe-plugin:2.20.1:verify from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-failsafe-plugin:2.20.1, parent: sun.misc.Launcher$AppClassLoader@5c647e05]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-failsafe-plugin:2.20.1:verify' with basic configurator -->
[DEBUG]   (s) basedir = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install
[DEBUG]   (s) reportsDirectory = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\surefire-reports
[DEBUG]   (s) skip = false
[DEBUG]   (f) summaryFile = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\failsafe-reports\failsafe-summary.xml
[DEBUG]   (s) testClassesDirectory = C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\test-classes
[DEBUG]   (s) testFailureIgnore = false
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@6bf13698
[DEBUG] -- end configuration --
[DEBUG] Failsafe report directory: C:\users\<myuid>\git\oce_usl\usl-parent\usl-features-install\target\surefire-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE