Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jenkins Maven作业中显示自定义测试结果_Maven_Jenkins_Continuous Integration - Fatal编程技术网

在Jenkins Maven作业中显示自定义测试结果

在Jenkins Maven作业中显示自定义测试结果,maven,jenkins,continuous-integration,Maven,Jenkins,Continuous Integration,我刚刚在现有的Maven POM中添加了一些Python单元测试,但我似乎无法让Jenkins在运行构建时报告测试结果 在“测试”阶段,我正在使用从Maven运行的测试。测试从Jenkins作业成功运行,并生成与xUnit兼容的测试报告到target/surefire reports/test-nosetests.xml,但Jenkins没有获得结果 有趣的是,Maven还报告在执行测试套件之前没有运行任何测试: -----------------------------------------

我刚刚在现有的Maven POM中添加了一些Python单元测试,但我似乎无法让Jenkins在运行构建时报告测试结果

在“测试”阶段,我正在使用从Maven运行的测试。测试从Jenkins作业成功运行,并生成与xUnit兼容的测试报告到target/surefire reports/test-nosetests.xml,但Jenkins没有获得结果

有趣的是,Maven还报告在执行测试套件之前没有运行任何测试:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
There are no tests to run.

Results :

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

[INFO] 
[INFO] --- exec-maven-plugin:1.1.1:exec (nosetests) @ server ---
[INFO] ................
[INFO] ----------------------------------------------------------------------
[INFO] Ran 16 tests in 194.799s
[INFO] 
[INFO] OK
[INFO] Registering compile source root /Volumes/Data/workspace/myProject/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Jenkins没有看到结果,或者Maven没有将我的测试套件视为实际测试,这是一个问题吗?

正如您在测试运行输出中看到的,Maven没有将测试识别为测试。此外,要查看Jenkins中的结果,您需要检查nope是否可以创建与junit兼容的输出结果文件(我假设),Jenkins可以读取并显示这些文件。

我通过在Jenkins中使用“自由风格软件项目”而不是“maven2/3”项目解决了这个问题

构建下,选择添加构建步骤,并将项目配置为调用顶级Maven目标。我正在使用测试目标

最后,在生成后操作下,选择发布JUnit测试结果报告的添加生成后操作,并将其指向测试的xUnit输出。由于某些原因,此选项不适用于Maven 2/3作业


要根据答案构建,如果您在项目的多个子目录中有测试,您可以在“测试报告XMLs”字段中使用通配符,例如:
**/target/surefire reports/*.xml

如果您有一个更模块化的Jenkins设置,使用免费项目将无法正确构建子模块。如果生成报告执行id的maven插件是
e2eTests
,那么将以下代码段添加到pom.xml中,jenkins maven插件将处理其余的部分

<properties>
    <jenkins.e2eTests.reportsDirectory>target/protractor-reports</jenkins.e2eTests.reportsDirectory>
</properties>

目标/量角器报告

请参见添加maven编译器插件后重试

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <executions>
                <execution>
                    <id>default-testCompile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <encoding>ISO-8859-1</encoding>
                <source>1.8</source>
                <target>1.8</target>
                <useIncrementalCompilation>false</useIncrementalCompilation>
                <testSource>1.8</testSource>
                <testTarget>1.8</testTarget>
            </configuration>
        </plugin>

org.apache.maven.plugins
maven编译器插件
3.8.0
默认测试编译
编译
测试编译
ISO-8859-1
1.8
1.8
假的
1.8
1.8

Nose可以生成兼容的输出,如我在问题中所述。问题是我无法让Maven看到输出并将其报告给Jenkins。我自己的回答说明了如何绕过Maven,让Jenkins直接看到报告。我认为这与Jenkins-9980 bug有关。