1

对于具有 6 个项目(类库和 wcf 服务)的 Visual Studio 解决方案,我添加了一个带有一个测试的新测试项目,其中只有一行 Assert.AreEqual(1,1)。OpenCover 显示 100% 的覆盖率(100% 序列和 100% 分支)。

OpenCover.Console.exe -target:"nunit3-console.exe" "-targetargs:Services.nunit" -register:user -skipautoprops -mergebyhash

只有当我从测试中的其他项目中实例化一个类时,覆盖率才下降到 0.1%。

所以看起来如果一个 dll 没有加载,OpenCover 就无法计算它的代码覆盖率。

现在的问题是,如果添加了一个新的类库并且它从未在单元测试中实例化,那么 OpenCover 会在计算覆盖率指标时忽略 dll。

这很重要,因为我们有一个分布式团队,开发人员可能只是创建一个类库而从不为其编写测试。它最终会出现在代码审查中,但可以配置 OpenCover 来检测这种情况。

4

1 回答 1

1

所以看起来如果一个 dll 没有加载,OpenCover 就无法计算它的代码覆盖率。

这是预期的行为

现在的问题是,如果添加了一个新的类库并且它从未在单元测试中实例化,那么 OpenCover 会在计算覆盖率指标时忽略 dll。

它不会忽略它,运行时不会加载程序集,因此 OpenCover 看不到它。

它最终会出现在代码审查中,但可以配置 OpenCover 来检测这种情况。

不是现在这样,但您可以编写一个尝试加载其文件夹中的每个 .dll 的测试。这将导致它加载并且 OpenCover 将看到它(假设 pdb 可用并且过滤器允许它等等)

于 2016-03-07T11:05:35.343 回答