2012-03-07 2 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), и если возможно простой повторяемый тест. –

+0

Я нашел код в коде Google, но никаких тестов - этот проект доступен для меня, чтобы экспериментировать? –

ответ

2

У меня была та же проблема - это, кажется, вы Размещена issue to github, которая помогла мне решить, поэтому я отправляю его здесь для тех, у кого есть такая же проблема:

Я решил проблему, обновив до latest OpenCover (на данный момент, 4.0.804) и добавив переключатель -oldStyle, когда я позвонил в OpenCover. Также кажется, что последний OpenCover выводил то, что ReportGenerator не понравилось, поэтому мне тоже пришлось его обновить.

Я понятия не имею, что послужило причиной этой неудачи, казалось, что это произошло из ниоткуда на нашем сервере CI. Надеюсь, что это поможет любому, кто наткнется на этот вопрос в будущем.

+1

Да, я добавил переключатель '-oldStyle' в ответ на эту проблему. Для большинства людей не будет никакой заметной разницы, если у вас нет атрибута AllowPartiallyTrustedCallersAttribute. Если кто-то может помочь мне реплицировать проблему (даже в виртуальной машине), это будет большой помощью. –

+0

@ShaunWilde: Я посмотрю, есть ли какая-то виртуальная машина, которую я мог бы получить за вас. Не уверен, что я смогу, хотя, как это все работает, к сожалению ... – Grokys

+0

Я понимаю, что я никогда не мог воспроизвести проблему, которую вы все видите, и, к сожалению, у меня нет бюджета путешествия - OSS не платите хорошо :) –

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 
+0

Да, я использую NUnit в качестве тестировщика в OpenCover. Я не вижу никакой реальной разницы между вашим кодом и моим (хотя я еще не дошел до этапа отчета). –

Смежные вопросы