我正在努力使Visual Studio的代码覆盖率工具变得有用。我正在研究遗留项目,为了重构所有这些代码,我添加了单元测试。问题是,当我测量代码覆盖率时,我只看到三个已经测试过方法的dll程序集。
有些人可能会说“如果不存在,就意味着它没有经过测试”,基本上你是对的,但我希望这个机制可以帮助我避免犯错误。我想知道未经测试的类和方法在那里,所以我知道覆盖/未覆盖的比例。
这是我的自定义.runsettings文件的包含/排除部分。
<ModulePaths>
<Include>
<ModulePath>.*Some\.Library\.OfMine\.dll$</ModulePath>
<ModulePath>.*\.dll$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*my\.tests\.dll$</ModulePath>
<ModulePath>.*xunit\.core\.dll$</ModulePath>
<ModulePath>.*fluentassertions\.dll$</ModulePath>
<ModulePath>.*fluentassertions\.core\.dll$</ModulePath>
</Exclude>
</ModulePaths>
我不知道为什么,但代码覆盖率实际上也列出了FluentAssertions,XUnit和My.Tests.dll(存储测试),所以我将它们排除在外。那部分确实奏效了。这个link帮助了我。但是当我添加Some.Library.OfMine.dll时,它不会显示在代码覆盖率结果中。
为了帮助指出它,我添加了这一部分:
<SymbolSearchPaths>
<Path>E:\The\Absolute\Path\To\The\Test\Project\bin\Debug</Path>
</SymbolSearchPaths>
并在测试项目中向Some.Library.OfMine.dll添加了一个引用。我确定在构建完成它之后dll和pdb就在那里。
但是我仍然无法在代码覆盖率结果中看到覆盖/未覆盖的库中的Some.Library.OfMine.dll。
实际上我可以做我想做的事吗?如果是这样,如何实现呢?