【问题标题】:OpenCover generates an empty reportOpenCover 生成一个空报告
【发布时间】:2011-07-01 12:48:39
【问题描述】:

我正在使用OpenCover 来确定一个简单 C# 项目的代码覆盖率。

问题

虽然我可以看到 MSTest 正在运行单元测试(并成功),但生成的报告是空的。

详情

这是我正在使用的命令:

opencover.console.exe -register -arch:32 
                      -target:"%VSINSTALLDIR%\Common7\IDE\mstest.exe"
                      -targetargs:"/testcontainer:calculatortest.dll"
                      -filter:+[calculator.dll]* -output:coverage.xml

输出

Microsoft (R) Test Execution Command Line Tool Version 10.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.

Loading calculatortest.dll...
Starting execution...

Results               Top Level Tests
-------               ---------------
Passed                CalculatorTest.StatisticsTest.AddOccurrenceTest
Passed                CalculatorTest.StatisticsTest.AvgTest
2/2 test(s) Passed

Summary
-------
Test Run Completed.
  Passed  2
  ---------
  Total   2
Results file:  e:\Users\erno\Documents\Visual Studio 2010\Projects\CodeStatistics\CalculatorTest\bin\Debug\TestResults\erno_ERNO01 2011-07-01 14_27_06.trx
Test Settings: Default Test Settings
Visited Classes 0 of 0 (NaN)
Visited Methods 0 of 0 (NaN)
Visited Points 0 of 0 (NaN)

生成报告的内容:

<?xml version="1.0" encoding="utf-8"?>
<CoverageSession xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <VisitPoints />
</CoverageSession>

环境

代码在 64 位 Windows 7 上运行,但在 32 位 Visual Studio 命令提示符环境中执行。

编辑我在带有单元测试调试版本的目录中运行命令,并将 OpenCover 目录添加到环境路径中。

我尝试了什么

我搜索了与 PartCover 类似的问题(因为 OpenCover 似乎是一种分支),但找不到与问题匹配的任何内容并提出了解决方案。

编辑我还使用更广泛的过滤器 -filter:+[*]* 进行了测试,但这并没有以任何方式改变输出。

编辑我还使用 MSTest /noisolation 参数 as mentioned here 进行了测试。还是没有结果。

编辑我还通过完全删除过滤器并回退到默认过滤器进行了测试。没有结果。

【问题讨论】:

    标签: c# .net mstest code-coverage opencover


    【解决方案1】:

    您应该能够使用 -register:user 开关来执行每个用户注册,即无需完整的管理员权限即可注册(和取消注册)。

    【讨论】:

    • Wilde,啊,我把那个开关拼错了:-register:erno(也没有收到关于这个的消息。我也会测试一下。谢谢!
    • 实际上是:用户的所有反馈都会受到好评,这是一个年轻的项目。
    • 王尔德,是的,我在阅读您的回答后注意到了这一点。我使用 OpenCover 所犯的大多数错误都源于缺少文档、示例和错误消息。我知道这是一个没有问题的年轻项目。谢谢
    【解决方案2】:

    休息一下后,我的头脑清醒了,我怀疑是由 OpenCover 完成的 COM 注册,所以我检查了事件日志。

    确实 COM 注册失败。所以我决定尝试以管理员身份运行命令提示符,怀疑我受到 UAC 的阻碍

    运行包含/noisolation 标志的命令会挂起进程。

    如果没有此标志,则生成并正确填写报告。

    我想我会永久注册 COM dll,这样我就可以使用我喜欢的任何凭据运行 OpenCover。

    我可能会做的另一件事是在 OpenCover 网站上添加一个问题,说明它正在吞噬异常。 (除非Shaun Wilde 读到这个并击败我)

    【讨论】:

      【解决方案3】:

      我在 Windows XP 上使用 NUnit 2.6 时遇到了类似的问题。 在我添加神奇的 register:user 标志之前,每个报告都是空白的。 @Shaun-Wilde,这个标志到底是做什么的?

      【讨论】:

      • 它强制 OpenCover 使用带有/n /i:user 的 regsvr32,这意味着分析器在 HKCU 而不是 HKLM 下注册(当您单独使用 -register 时)。有些人预先注册了分析器(即与服务一起使用),然后您根本不需要这些开关。我认为使用指南解释了这一点,但如果没有,请提出改进​​建议,即如果可以提供替代措辞。
      • 我已经重写了部分使用wiki,但我们应该更加强调强制使用注册标志,我一直收到空白报告一个多小时,在弄清楚之前尝试了很多东西问题。顺便说一句,很棒的工具!非常感谢!
      猜你喜欢
      • 2015-11-12
      • 2023-03-06
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多