我正在尝试使 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(用于存储测试),所以我将它们排除在外。那部分确实有效。这个链接帮助了我。但是当我添加 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 在覆盖/未覆盖的库中。
实际上有可能做我想做的事吗?如果是这样,如何实现?