SWIG编译的C ++ / Python代码的测试覆盖率

问题描述 投票:2回答:1

我有一个经典的SWIG设置,其中从Python调用一堆C ++函数。现在,在添加一些测试(在Python中)之后,我想在C ++源代码上获得测试覆盖率。经典的Python方法是

nosetests --with-coverage --cover-package=mypackage

但这只适用于本机Python模块。实际上,这将返回SWIG生成的mypackage.py文件的覆盖范围。

由于我需要覆盖C ++文件(/ SWIG生成的共享库),因此当然需要将--coverage添加到编译和链接器标志中。不知道从那里去哪里。

任何提示?

python c++ swig test-coverage
1个回答
0
投票

面对类似的问题,但用C代码。它与SWIG部分无关,只需要使用coverage工具编译C ++代码并执行它。我使用了gcovgcovr

使用gcov,使这项工作,使用以下标志编译代码(启用gcov检测)

CFLAGS_VAL + = - O0 - 覆盖

然后,执行测试。测试运行后,应生成.gcno和.gcda文件。

要创建覆盖率报告,请从根文件夹运行

gcovr -r。 --filter =“” - html --html-details -o coverage / coverage.html

GCOV docs,here

同样可以使用lcov创建,请按照此wiki页面中的示例进行操作

© www.soinside.com 2019 - 2024. All rights reserved.