2012-03-07 111 views
2
失败

时与NUnit的直接执行我的测试工作得很好,但是当通过OpenCover(仍与NUnit的为测试运行器)执行,我收到以下错误:NUnit的测试中OpenCover

ProcessModel: Default DomainUsage: Single 
Execution Runtime: Default 

.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F 
.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F. F.F.F.F.F.F.F.F.F.F.F.F.F.F.F 
.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F 
.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F 
Tests run: 200, Errors: 0, Failures: 200, Inconclusive: 0, Time: 0,5410309 seconds 
    Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0 

Errors and Failures: 
1) SetUp Error : GeoGen.Studio.PlugInLoader.LoaderTests 
    SetUp : System.MissingMethodException : Method not found: 'VoidSystem.CannotUnloadAppDomainException.SafeVisited(Int32)'. 
     at GeoGen.Studio.PlugInLoader.LoaderTests..ctor() 

2) Parent Failure : GeoGen.Studio.PlugInLoader.LoaderTests.AddPlugIn_ValidPlugIn_CreatesInstance 
    TestFixtureSetUp failed in LoaderTests 

错误2为每个测试重复。所有的测试都应该通过(并且它们通过NUnit传递)。覆盖与NCover正常工作,但它的试用期满了,我无法承担许可证。

感谢您的帮助!

+0

这看起来像一个OpenCover的错误 - 它无法找到它用于检测的注入方法 - 请在[github-opencover](https://github.com/sawilde/opencover)上提出问题,如果可能是一个简单的可重复测试。 – 2012-03-07 22:33:30

+0

我在Google代码上发现了代码,但未进行测试 - 此项目是否可供我进行实验? – 2012-03-08 22:17:12

回答

2

我有同样的问题 - 似乎你发布了一个issue to github,帮助我解决这个问题,所以我在这里张贴对于有同样问题的其他人:

我解决了问题,升级到latest OpenCover(此时为4.0.804),并在调用OpenCover时添加-oldStyle开关。这也似乎是最新的OpenCover输出的东西,ReportGenerator不喜欢,所以我不得不升级。

我不知道是什么原因导致了这种失败,它似乎来自我们CI服务器上的无处不在。希望将来能够帮助任何人绊倒这个问题。

+1

是的,我加了'-oldStyle'开关来回应这个人的问题。对于大多数人来说,除非有一些AllowPartiallyTrustedCallersAttribute,否则不会有明显的不同。如果任何人都可以帮助我复制这个问题(即使在虚拟机中),这将是一个很大的帮助。 – 2012-09-20 01:02:01

+0

@ShaunWilde:我将研究是否有某种虚拟机可以帮助您。不知道我将能够,因为它的所有工作的东西不幸... – Grokys 2012-09-20 11:29:23

+0

我知道我从来没有能够复制的问题,你都看到了,不幸的是我没有旅行预算 - OSS不支付好:) – 2012-09-20 11:54:04

0

我不能告诉你是否使用NUnit作为测试运行器或不使用OpenCover。下面是我用NUnit作为测试运行器运行OpenCover的批处理文件。我使用ReportGenerator来获得一个包含所有覆盖率统计信息的漂亮网页。既然你说你的测试运行正常与NUnit的亚军你会发现这个有用:

set buildOutputFolder=.\build-output 
set testDllFolder=\projects\YourProject.Test\bin\Debug 
set testDllName=YourProject.Test 
set targetDllFilters=+[YourProject*]* -[YourProject.Test*]* 

del %buildOutputFolder%\*.* 
REM I use a symbolic link to point to a single folder for these tools. 
REM Create the link by: 
REM mklink /D OClib c:\packages\OpenCover.1.0.719 
REM mklink /D RptGen c:\packages\ReportGenerator.1.2.1.0 
REM mklink /D NUnitLib c:\packages\NUnit-2.5.10.11092\bin\net-2.0 

OClib\OpenCover\OpenCover.Console.exe -register:user -target:"NUnitLib\nunit-console.exe" -targetargs:"/noshadow %testDllFolder%\%testDllName%.dll" -filter:"%targetDllFilters%" -output:"%buildOutputFolder%\CoverageResult.xml" 
del TestResult.xml 

RptGen\ReportGenerator\ReportGenerator %buildOutputFolder%\CoverageResult.xml %buildOutputFolder% 
%buildOutputFolder%\index.htm 
+0

是的,我使用NUnit作为OpenCover中的测试运行器。我的代码和我的代码之间没有任何真正的区别(虽然我还没有进入报告阶段)。 – 2012-03-07 23:15:30