10

我正在使用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参数进行了测试。仍然没有结果。

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

4

3 回答 3

7

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

于 2011-07-01T21:29:07.120 回答
0

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

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

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

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

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

我可能会做的另一件事是在 OpenCover 站点上添加一个问题,说明它正在吞噬异常。(除非肖恩·王尔德读到这篇文章并击败我)

于 2011-07-01T16:22:02.667 回答
0

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

于 2012-04-18T00:49:32.957 回答