【问题标题】:OpenCover shows 100% coverage with no valid testsOpenCover 显示 100% 的覆盖率,没有有效的测试
【发布时间】:2016-03-07 19:05:35
【问题描述】:

对于具有 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 来检测这种情况。

【问题讨论】:

标签: c# nunit opencover nunit-3.0


【解决方案1】:

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

这是预期的行为

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2019-11-30
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多