jan*_*ybs 9 unit-testing code-coverage cobertura gcovr
我有c ++/c应用程序,有很多单元测试.我想得到每个测试的整体覆盖率和个人覆盖率,条件是每个测试只能运行一次.覆盖格式必须是xml(cobertura xml),以便jenkins cobertura插件处理.
到目前为止,我在编译时生成gcno文件,在使用source时生成gcda文件.然后调用gcovr获取xml文件.
我想创建每个单元测试的覆盖范围(从而为每个单元测试创建覆盖xml),然后将这些xml文件合并到一个xml文件中.
谢谢!
agu*_*ars 18
ReportGenerator的最新版本可以合并 cobertura 文件。
您可以从nuget安装它
用法:
reportgenerator "-reports:target\*\*.xml" "-targetdir:C:\report" -reporttypes:Cobertura
Run Code Online (Sandbox Code Playgroud)
在 targetdir 目录下生成一个文件Corbertura.xml
可以使用dotnet core版本在 linux 或 mac 上使用
我发现的用于合并 Cobertura 文件的最简单实用程序是cobertura-merge
通过 NPM。
用法:
npm install cobertura-merge
cobertura -merge -o output.xml package1=input1.xml package2=input2.xml
Run Code Online (Sandbox Code Playgroud)
或者可以直接使用,无需安装npx
:
npx cobertura-merge -o output.xml package1=input1.xml package2=input2.xml
Run Code Online (Sandbox Code Playgroud)
示例源自GitHub READMEcobertura-merge
。
看来你正在使用 gcovr 。从版本 4.2 开始,gcovr 可以将其 JSON 报告与-a
选项合并。所以你可以这样做:
# run test1
./test1
gcovr ... --xml coverage-test1.xml --json coverage-test1.json
find . -type f -name '*.gcda' -exec rm {} +
# run test2
./test2
gcovr ... --xml coverage-test2.xml --json coverage-test2.json
find . -type f -name '*.gcda' -exec rm {} +
# combine JSON reports
gcovr -a coverage-test1.json -a coverage-test2.json --xml coverage-combined.xml
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6383 次 |
最近记录: |