单元测试

C++单元测试

C++部分单测基于 gtest 实现,具体编写方法可以参考已有测试用例。

单测覆盖率统计

在开发镜像中,内置了C++单测覆盖率统计工具 gcovr,可以通过以下命令在本地查看覆盖率。

  1. 进入开发容器中,参考开发环境

  2. CMake 设置参数 BUILD_LOGTAIL_UT=ON,编译单测

    cmake -DBUILD_LOGTAIL_UT=ON <其他编译参> ..
  3. 运行脚本 ./scripts/run_core_ut.sh,运行单测

  4. 生成覆盖率报告

mkdir -p coverage-report
# 生成详细的报告
gcovr -r ./core --txt coverage-report/index.txt --html-details --html coverage-report/index.html -e ".*\.pb\.cc" -e ".*\.pb\.h" -e ".*unittest.*" -e ".*config_server.*" -e ".*go_pipeline.*" -e ".*sdk.*"
# 生成本次commit diff的报告
python3 tools/coverage-diff/main.py coverage-report/index.txt

Go插件单元测试

测试框架

如何需要一些测试指令,比如 assert, require, mock 以及 suite,可以使用这个包协助你进行测试: github.com/stretchr/testify。更多使用方法可以查看 使用说明arrow-up-right

测试工具

从插件开发以及 Logger 接口 一文可以看到,ilogtail.Context 接口包含了 LoongCollector 的元配置信息,因此提供了 Mock Context 以及 Mock Collector 实现进行单元测试。

测试插件行为

如果需要日志的方式进行验证插件具体行为,可以参加日志功能高级用法

Last updated