在使用C ++ / CLI时,我对单元测试代码覆盖率有疑问。
我已经设法在Visual Studio IDE中使用vsinstr
和vsperfmon
从命令行获得代码覆盖率。但是我现在面临的问题是代码覆盖范围包括来自std
库,boost
以及其他我不想获取代码覆盖率的库的函数。
我尝试了/EXCLUDE
选项,但它根本不起作用。
我有以下两个.rsp
个文件:
/coverage
/exclude:std::*
/exclude:boost::*
MyExe.exe
/coverage
/exclude:std::*
/exclude:boost::*
UnitTestsDll.dll
我使用以下命令检测.exe
和单元测试dll:
vsinstr @foo.rsp
然后启动性能监视器:
Start vsperfmon -coverage -output:mytestrun.coverage
之后我从visual studio IDE运行我的单元测试,当他们完成时我关闭了vsperfcmd
。
当我在visual studio中查看mytestrun.coverage
时,它仍然包含所有std
和其他库。
我错过了重要的事情吗?
希望有人可以提供帮助。
编辑:
我尝试了以下命令从coverage中排除单元测试: vsinstr -coverage“UnitTestsDll.dll”/ EXCLUDE:UnitTestsNameSpace。*
请注意,我使用::
而不是.
,因为单元测试命名空间是托管命名空间。在运行代码覆盖并检查它之后,似乎已经摆脱了单元测试的覆盖范围,这是正确的行为。因此,似乎/EXCLUDE
适用于.
分隔符,而不适用于::
分隔符。