如何在 GitLab 的同一作业中保留多个 gradle 测试任务的测试报告?
How can I retain the test report of multiple gradle test tasks within the same job on GitLab?
这是我的 .yml 文件的样子:
image: openjdk:11
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Djava.security.egd=file:/dev/./urandom"
DOCKER_TLS_CERTDIR: ""
build_custom_scripts:
script:
- ./gradlew test --tests=MainTest.testIsOddNumber
- ./gradlew test --tests=MainTest.testIsInAlphabeticalOrder
artifacts:
when: always
paths:
- build/test-results/test/TEST-*.xml
reports:
junit: build/test-results/test/TEST-*.xml
目前,在测试报告中,我只看到了第二次测试。显然,该文件已被第二个 gradlew 测试任务覆盖。但我想保留之前测试任务的报告内容。我怎么做?在有人建议之前:我已经检查了关于单元测试报告的 gitlab 文档并阅读了很多关于 gitlab 的线程,但它没有帮助。
编辑:我不想用一个 gradlew test 命令执行多个单元测试,我知道这是可能的。我特别询问在同一作业中执行的多个 gradlew 测试任务的 junit 报告。
artifacts
关键字确实有一个 name
option,但这会影响所有工件的下载时间,而不是上传时间。 artifacts
关键字中没有任何其他选项,因此看起来没有办法告诉 运行ner 不要覆盖它们,但是您可以在 [=15] 中解决它=] 部分,只需将文件移动到新名称即可:
... # this part above is all the same
build_custom_script:
script:
- ./gradlew test --tests=MainTest.testIsOddNumber
- mv build/test-results/test/{filename}.xml build/test-results/test/testIsOddNumber.xml
- ./gradlew test --tests=MainTest.testIsInAlphabeticalOrder
- mv build/test-results/test/{filename}.xml build/test-results/test/testIsInAlphabeticalOrder.xml
artifacts:
when: always
paths:
- build/test-results/test/testIsOddNumber.xml
- build/test-results/test/testIsInAlphabeticalOrder.xml
...
如果你有很多这样的东西肯定不理想,但除非有办法一次性 运行 它们并让报告涵盖所有内容(我不熟悉 gradle), 做这样的事情应该可行。
对于 junit 报告,您可以指定多个 .xml 文件,Gitlab 在 UI:
中显示它们时会合并它们
artifacts:
when: always
reports:
junit: build/test-results/test/testIsOddNumber.xml, build/test-results/test/testIsInAlphabeticalOrder.xml]
所以你可以重命名它们,这样你就可以单独上传它们供以后查看,但仍然让它们全部显示在 junit 报告中,或者像以前一样,对于 junit 报告你可以使用通配符,如 build/test-results/test/*.xml
,它会以同样的方式工作。将它们作为常规工件上传时,尽管它们每个都需要一个唯一的名称,或者您可以 tar 一起 tar czf build/test-results/test/*.xml test-results.tar.gz
然后上传 tar 文件。
这是关于 junit report
的详细信息
这是我的 .yml 文件的样子:
image: openjdk:11
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Djava.security.egd=file:/dev/./urandom"
DOCKER_TLS_CERTDIR: ""
build_custom_scripts:
script:
- ./gradlew test --tests=MainTest.testIsOddNumber
- ./gradlew test --tests=MainTest.testIsInAlphabeticalOrder
artifacts:
when: always
paths:
- build/test-results/test/TEST-*.xml
reports:
junit: build/test-results/test/TEST-*.xml
目前,在测试报告中,我只看到了第二次测试。显然,该文件已被第二个 gradlew 测试任务覆盖。但我想保留之前测试任务的报告内容。我怎么做?在有人建议之前:我已经检查了关于单元测试报告的 gitlab 文档并阅读了很多关于 gitlab 的线程,但它没有帮助。
编辑:我不想用一个 gradlew test 命令执行多个单元测试,我知道这是可能的。我特别询问在同一作业中执行的多个 gradlew 测试任务的 junit 报告。
artifacts
关键字确实有一个 name
option,但这会影响所有工件的下载时间,而不是上传时间。 artifacts
关键字中没有任何其他选项,因此看起来没有办法告诉 运行ner 不要覆盖它们,但是您可以在 [=15] 中解决它=] 部分,只需将文件移动到新名称即可:
... # this part above is all the same
build_custom_script:
script:
- ./gradlew test --tests=MainTest.testIsOddNumber
- mv build/test-results/test/{filename}.xml build/test-results/test/testIsOddNumber.xml
- ./gradlew test --tests=MainTest.testIsInAlphabeticalOrder
- mv build/test-results/test/{filename}.xml build/test-results/test/testIsInAlphabeticalOrder.xml
artifacts:
when: always
paths:
- build/test-results/test/testIsOddNumber.xml
- build/test-results/test/testIsInAlphabeticalOrder.xml
...
如果你有很多这样的东西肯定不理想,但除非有办法一次性 运行 它们并让报告涵盖所有内容(我不熟悉 gradle), 做这样的事情应该可行。
对于 junit 报告,您可以指定多个 .xml 文件,Gitlab 在 UI:
中显示它们时会合并它们 artifacts:
when: always
reports:
junit: build/test-results/test/testIsOddNumber.xml, build/test-results/test/testIsInAlphabeticalOrder.xml]
所以你可以重命名它们,这样你就可以单独上传它们供以后查看,但仍然让它们全部显示在 junit 报告中,或者像以前一样,对于 junit 报告你可以使用通配符,如 build/test-results/test/*.xml
,它会以同样的方式工作。将它们作为常规工件上传时,尽管它们每个都需要一个唯一的名称,或者您可以 tar 一起 tar czf build/test-results/test/*.xml test-results.tar.gz
然后上传 tar 文件。
这是关于 junit report
的详细信息