
# 生成单元测试报告
该步骤用于解析用户生成的单元测试结果文件，并生成可视化报告。（仅支持图形化构建。）
![](https://support.huaweicloud.com/usermanual-codeci/public_sys-resources/caution_3.0-zh-cn.png)
支持的单元测试文件大小最大为10M。
#### 前提条件
在执行"单元测试报告"步骤前，需已生成测试结果文件，并且该文件框架符合编译构建服务支持的框架类型。
#### 图形化构建
在[配置构建步骤](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0059.html)中，添加"单元测试报告"构建步骤，参考[表1]配置参数。
 表1单元测试报告参数说明 
| **参数**    | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|
| 步骤显示名称    | 构建步骤的名称，可自定义修改。 - 支持中文、英文、数字、"-"、"_"、英文逗号、英文分号、英文冒号、"."、"/"、圆括号（中英文）。  - 字符长度范围为1\~128。                                                                                                                                                                                                                                                                                                                        |
| 测试报告路径    | 填写测试报告存放路径。需填写相对于项目根目录的相对路径，如"target/surefire-reports/TEST\*.xml"。路径中支持\*和\*\*通配符匹配多级目录。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 发布覆盖率报告   | 单元测试覆盖率报告用来衡量代码中哪些部分已经被单元测试覆盖，哪些部分还没有被覆盖。 - 是：发布覆盖率报告。 同时需设置以下两个参数： - **覆盖率报告格式**：选择覆盖率报告格式。目前仅支持JaCoCo工具生成的报告文件格式。  - **覆盖率报告路径**：需填写基于项目根目录的相对路径，例如"\*\*/site/jacoco"，路径中支持\*和\*\*通配符匹配多级目录。    - 否：不发布覆盖率报告。   |
| 失败后是否继续运行 | 当前步骤执行失败后是否继续执行下一个步骤，根据实际使用场景选择是或否。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
#### CMake构建示例
1. CMakeLists.txt文件中参考以下命令，用于生成单元测试报告。
   ```
   # 创建名为 unit_test 的可执行文件
   add_executable(unit_test test/unit_test.cpp)
   target_link_libraries(unit_test ${CMAKE_PROJECT_NAME}_lib gtest gtest_main pthread)
   # 启用测试功能
   enable_testing()
   # 添加测试用例
   add_test(NAME unit_test COMMAND unit_test)
   # 添加生成测试报告的自定义目标
   add_custom_target(report
       COMMAND unit_test --gtest_output=xml:${CMAKE_BINARY_DIR}/test_report.xml
       COMMAND echo "Test report generated at ${CMAKE_BINARY_DIR}/test_report.xml"
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
       DEPENDS unit_test
       COMMENT "Generating unit test report"
   )
   ```
   
2. 生成单元测试报告后，在"单元测试报告"步骤中填写上传报告路径"\*\*/test_report.xml"。 ![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002543266739.png)
   
3. 基于gcovr生成cobertura风格的单元测试覆盖率报告，参考命令如下。 当前gcovr工具只在最新的CMkae工具版本(cmake3.26.5-gcc13.1.0)中进行了内置。
   ```
   gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o coverage.xml --root .
   ```
   
4. 生成覆盖率报告后，在"单元测试报告"步骤中填写上传报告路径。 ![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002543189749.png)
   
 
#### Python构建示例
1. 生成Python单元测试报告和覆盖率报告命令参考如下。
   ```
   pip install pytest 
   pip install pytest-cov 
   mkdir -p reports
   # 报告生成
   pytest -v tests/test_yfinance_client.py --cov=yfinance_client --cov-report=xml:reports/coverage.xml --junitxml=reports/junit-report.xml
   ```
   
2. 生成报告后，在"单元测试报告"步骤中填写上传报告路径，参考如下。 ![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002543272505.png)
   
 
