【问题标题】:Jenkins JUnit plugin gives error "ERROR: No test report files were found. Configuration error?"Jenkins JUnit插件给出错误“错误:未找到测试报告文件。配置错误?”
【发布时间】:2019-03-07 21:30:37
【问题描述】:

我有 Jenkins 主容器在 Kubernetes 集群中运行。我有一个单独的 VM 配置为构建从属,以便它可以构建容器。

我在 git repo 中使用 Multibranch Pipeline 和 Jenkinsfile。

管道构建 Docker 映像,这是一个 Django 应用程序。我已经安装了 django_nose,所以它可以生成带有测试结果的 xunit 文件。

Django 设置有以下选项来启用 xunit 测试结果。

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
    '--with-xunit',
    '--xunit-file=/tmp/tests/results/results.xml',
] 

在管道中,我有以下阶段:

stage("Test") {
    sh("docker run --rm -i \
        -v '${env.WORKSPACE}/tests/results/':/tmp/tests/results \
        ${image} python3 manage.py test")
    junit '${env.WORKSPACE}/tests/results/*.xml'
}

它将Jenkins工作空间中的一个目录挂载为容器中的一个卷,以便容器完成后Jenkins可以查看保存的测试结果。

当我运行构建时,我收到以下错误:

[Pipeline] { (Test)
[Pipeline] sh
[my_project-test-7T6G6Z...QQBYGFA] Running shell script
+ docker run --rm -i -v /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/:/tmp/tests/results my-registry/username/my_project python3 manage.py test
nosetests --with-xunit --xunit-file=/tmp/tests/results/results.xml --verbosity=1
Creating test database for alias 'default'...
............
----------------------------------------------------------------------
Ran 12 tests in 1.421s

OK
Destroying test database for alias 'default'...
[Pipeline] junit
Recording test results
No test report files were found. Configuration error?
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

我可以看到 Django 测试正在运行并通过。如果我查看 Jenkins 从属 VM,我可以看到 results.xml 文件位于应有的位置,并且它包含测试的 XML 结果。

jenkins@jenkins-slave01:~/jenkins_home/workspace$ ls -al /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/results.xml
-rw-r--r-- 1 root root 1329 Oct  2 09:45 /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/results.xml
jenkins@jenkins-slave01:~/jenkins_home/workspace$

为什么 Jenkins 无法获得测试结果,我可以看到文件已创建?

【问题讨论】:

    标签: django jenkins junit xunit


    【解决方案1】:

    我想出了答案。 JUnit 需要工作空间内的相对路径。您不需要包含工作区的路径。

    junit 'tests/results/*.xml'
    

    【讨论】:

    • 我在这里找不到任何解决方案?
    • 尝试从 cli 进行构建,看看是否能够找到测试结果和报告。路径可能因版本和自己的设置而异。
    【解决方案2】:

    我有这个错误是因为我在测试结果的路径中有一个前导点,例如:

    junit './build/outputs/androidTest-results/connected/flavors/DEV/*.xml'
    

    我不知道为什么,但这解决了它:

    junit 'build/outputs/androidTest-results/connected/flavors/DEV/*.xml'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 2019-07-05
      • 1970-01-01
      • 2013-02-02
      • 2019-08-28
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多