10

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

我在“测试”阶段使用exec-maven-plugin从 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 没有将我的测试套件视为实际测试的问题?

4

5 回答 5

19

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

新项目

Build下,选择Add build step并将项目配置为Invoke top-level Maven targets。我正在使用测试目标。

调用顶级 Maven 目标

最后,在Post-build Actions下选择Add post-build action of Publish JUnit test result report并将其指向测试的 xUnit 输出。由于某种原因,此选项不适用于 Maven 2/3 作业。

发布 JUnit 测试结果报告

于 2012-11-28T19:20:46.357 回答
4

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

于 2015-01-15T20:26:10.690 回答
2

如果您使用免费项目的模块化程度更高的 Jenkins 设置将无法正确构建子模块。如果生成报告执行 id 的 maven-plugin 是e2eTests,则将以下代码段添加到您的 pom.xml 中,jenkins maven 插件将负责其余的工作!

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

https://wiki.jenkins-ci.org/display/JENKINS/Building+a+maven2+project

于 2017-05-04T14:54:19.593 回答
1

添加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>
于 2021-01-12T16:43:58.993 回答
-1

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

于 2012-11-19T19:43:21.753 回答