如何在 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

的详细信息