NUnit测试在OpenCover中失败

时间:2012-03-07 21:59:44

标签: .net unit-testing nunit code-coverage opencover

我的测试在使用NUnit直接执行时效果很好,但是当通过OpenCover执行时(仍然使用NUnit作为测试运行器),我得到以下错误:

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正常工作,但其试用期已过,我无法负担许可证。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

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

我不知道是什么导致了这个失败,它似乎来自我们的CI服务器。希望有助于任何人在将来遇到这个问题。

答案 1 :(得分:0)

我不知道你是否正在使用NUnit作为OpenCover的测试运行器。下面是我用来运行OpenCover并使用NUnit作为测试运行器的批处理文件。我使用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