8

我正在尝试使 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 在覆盖/未覆盖的库中。

实际上有可能做我想做的事吗?如果是这样,如何实现?

4

0 回答 0