Gitlab CI中多个模块存在时的测试报告

182次阅读
没有评论

问题描述

正在尝试为一个具有Gradle的Java项目设置Gitlab CI的构建脚本。该项目有三个不同的模块A、B和C,其中模块B和C依赖于模块A。
每个模块都有一个build.gradle文件和其中的单元测试。项目的根目录下也有一个build.gradle文件。用户希望在GitLab CI中进行新的推送时能够查看测试报告。用户已经成功执行了测试,使用类似以下脚本的gradle命令执行了check命令:

test:
  stage: test
  script:
    - ./gradlew check

然而,这并没有提供任何测试报告。在日志中,用户只看到类似以下的内容:

Starting a Gradle Daemon (subsequent builds will be faster)
> Task :compileJava NO-SOURCE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :A:compileJava
> Task :A:processResources NO-SOURCE
> Task :A:classes
> Task :A:jar
> Task :B:compileJava
> Task :B:processResources NO-SOURCE
> Task :B2:classes
> Task :B:compileTestJava
> Task :B:processTestResources
> Task :B:testClasses
> Task :B:test
> Task :B:check
> Task :A:compileTestJava
> Task :Ar:processTestResources NO-SOURCE
> Task :A:testClasses
> Task :A:test
> Task :A:check
BUILD SUCCESSFUL in 42s

虽然构建失败时会显示测试失败,但用户没有任何关于执行了哪些测试、哪些测试失败或其他信息的指示。
用户希望得到一些关于如何解决这个问题的资源或提示。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Gitlab CI的构建脚本中,可以使用artifacts来指定测试报告的位置。以下是一个示例的构建脚本:

test:
  stage: test
  script:
    - ./gradlew test
  artifacts:
    when: always
    reports:
      junit:
        - a/build/test-results/test/**/TEST-*.xml
        - b/build/test-results/test/**/TEST-*.xml
        - c/build/test-results/test/**/TEST-*.xml

在上面的示例中,我们使用artifacts来指定测试报告的位置。when: always表示无论构建是否成功,都会保存测试报告。reports中的junit指定了测试报告的格式和位置。用户可以根据自己的项目结构和测试报告的位置进行相应的配置。
请注意,上述示例中的路径是根据用户提供的问题描述进行的假设。用户需要根据自己的项目结构和测试报告的位置进行相应的调整。

方案2

如果方案1无法解决问题,可以尝试其他方法,如使用第三方工具或插件来生成测试报告。
如果方案1无法满足用户的需求,用户可以尝试使用其他方法来生成测试报告。有许多第三方工具和插件可以帮助生成测试报告,如Jacoco、Cobertura等。用户可以根据自己的需求选择合适的工具或插件,并按照它们的文档进行配置和使用。
请注意,使用第三方工具或插件可能需要额外的配置和依赖项。用户需要根据自己的项目和需求进行相应的调整。

正文完