VS环境下,没有源码只有dll时做代码覆盖率检查
程序员文章站
2022-06-01 17:23:26
...
近期想做代码覆盖率的测试,但是因为只有编译好的dll没有源码,很多看着很方便的工具都不能用。百度了半天能用的就是商用的coverage validator.
因为环境是windows+VS+GTEST,就开始研究VS自己的工具。
后来发现其实VS就有提供代码覆盖率的测试。不过只能用命令行方式执行。里面提供了块覆盖率,没有行的。如果有源码,根据生成的记录可以直接对照源码显示。
1. 按照网上介绍的目录找exe时,发现没有。这才注意到VS express不支持测试分析模块,相关工具都不提供。只能安装VS enterprise版试了。安装好后,相应的工具貌似就都装好了。
2. 开始插桩dll:
这几个可执行文件都在 C:\Program Files\Microsoft Visual Studio <<version>>\Team Tools\Performance Tools>
vsinstr /coverage D:\Test\TestDLLApp\bin\Debug\test.dll
注意:a. test.dll是待测的dll文件
b. 需要编译时同时生成pdb文件
c. 需要编译时打开link的/profile选项
3. 开始监控:
vsperfcmd /start:coverage /output:c:\test\sample.coverage
4. 这时可以使用各种测试方法调用待测dll进行测试,覆盖率都会统计到上面的output文件中。
5. 终止监控
vsperfcmd /shutdown
所有数据已经都写入文件,不过只能用VS打开。但是前面所有操作都可以不打开VS执行。