2012-03-07 76 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