我想使用 MSTest
来收集代码覆盖率,不仅用于经典单元测试,还用于针对Web服务进行的调用 . 我正在使用 Visual Studio 2013
与最新的更新 .
我有源代码和二进制文件(如果需要,还包括 PDB
文件),但不幸的是我到目前为止我的尝试都没有用 .
我尝试在我的测试项目中配置 .runsettings
文件以指向webservice的二进制文件可用的目录,并将 SymbolSearchPath
设置为该目录:
...
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>.*CPPUnitTestFramework.*</ModulePath>
</Exclude>
<Include>
<ModulePath>\\AValidPathTo\My.dll</ModulePath>
</Include>
</ModulePaths>
</CodeCoverage>
<SymbolSearchPaths>
<Path>\\AValidPathTo\My\Binaries</Path>
</SymbolSearchPaths>
...
代码覆盖似乎忽略了这些设置 - 我确保通过 Test
=> Test Settings
选择了正确的 .runsettings
文件 .
我的第二次尝试是遵循_2565063中描述的步骤 - 摘录如下:
-
在本地复制所需的产品二进制文件,产品PDB和测试二进制文件 .
-
检测产品二进制文件:a . 打开Visual Studio 2005命令提示符(“开始”|“所有程序”|“Microsoft Visual Studio 2005”|“Visual Studio工具”|“Visual Studio命令提示符”) . b . 转到二进制文件所在的目录c . 对所有二进制文件执行“vsinstr -coverage” . 例如如果您的二进制名称是'coolproduct.dll',则键入“vsinstr -coverage coolproduct.dll” .
-
启动代码覆盖率监视进程a . 返回上一个命令提示符b.Type“vsperfcmd -start:coverage -output:outputFilename.coverage” .
-
执行测试a . 对于自动化测试,导航到测试二进制文件所在的目录并执行“mstest /testcontainer:TestDll.dll” . b . 如果有的话,运行手动测试
-
结束代码覆盖率监视进程a . 在先前打开的命令提示符下,键入“vsperfcmd -shutdown” . 这将关闭覆盖监视器并将覆盖数据保存到磁盘 .
不幸的是,这也没有用 - 在重新签名已签名的DLL之后(这是一个必要的额外步骤)我最终得到了一个没有任何数据的 .coverage
文件(也没有错误) .
使用 MSTest
为webservice调用收集代码覆盖率的步骤是什么?