2016-10-12 11 views
0

Я не получаю никаких результатов от opencover. Мой nunit проверяет все прохождение и прохождение, просто нет результатов покрытия. проблема, по-видимому, является opencover-фильтрами, но мы ее не устанавливаем. Какие-либо предложения?Невозможно получить плагин Gradle OpenCover для получения результатов покрытия

Файл CodeCoverage.xml содержит группу строк, таких как следующие, которые указывают, что плагин сообщает opencover, чтобы отфильтровывать DLL, которые мы пытаемся измерить.

<Module hash="A3-F0-3A-1A-FF-38-D7-EF-A2-55-C9-8B-84-37-CF-CF-00-80-70-23" skippedDueTo="Filter"> 
<FullName>C:\gitlab-runner\builds\83ebc972\0\active\scrpt\output\Scrpt.Core.dll</FullName> 
<ModuleName>Scrpt.Core</ModuleName> 
<Classes/></Module> 

который имеет правильный путь для файла dll, но я не понимаю, почему он пропускается из-за фильтрации. Единичные тесты содержатся в dll Scrpt.Test.dll, а остальная часть кода находится в других DLL, все из которых отфильтровываются.

Я использую следующие плагин

plugins { 
    id 'com.ullink.msbuild' version '2.15' 
    id 'com.ullink.nunit' version '1.8' 
    id 'com.ullink.opencover-nunit' version '1.6' 
} 

и определение плагина для NUnit и opencover являются:

nunit { 
    testAssemblies = [file('output/Scrpt.Tests.dll')] 
    shadowCopy = false 
    useX86 = true 
    ignoreFailures = false 
} 

opencover { 
    targetAssemblies = [file('output/Scrpt.dll'),file('output/Scrpt.Core.dll'),file('output/Scrpt.SourceCitations.dll'),file('output/ScrptUtilLib.dll')] 
    ignoreFailures = false 
} 

Спасибо за вашу помощь, -herb

ответ

0

Это было ответил через помощь Франсуа Вальди на https://github.com/Ullink/gradle-opencover-plugin/issues/17

Проблема оказалась в том, что плагин opencover не генерировал результаты покрытия .xml. В xml появилось сообщение об ошибке, что файлы, которые меня интересовали, были пропущены из-за фильтров, но я не мог найти, какие фильтры вызывали это.

Я закончил тем, что заменил opencover plugin задачей, которая делает то же самое. Не знаете, почему плагин не работал, но замена по сути то же самое, что и он вызывает nunit, создает объем обработки контента xml, который затем загружает sonarqube. Плюс делать это таким образом дает вам больше контроля над тем, где файлы в конечном итоге.

Немного неудобно, но это работает. В моем первоначальном вопросе заменил открытый блок.

task opencover(type:Exec) { 
executable 'C:\\Program Files (x86)\\OpenCover\\OpenCover.Console.exe' 
workingDir file('output') 
args "-target:c:\\Program Files (x86)\\NUnit 2.6.4\\bin\\nunit-console-x86.exe", "-targetargs:c:\\gitlab-runner\\builds\\83ebc972\\0\\active\\scrpt\\output\\scrpt.tests.dll /noshadow", '-output:coverage.xml', '-filter:+[*]*' 
} 

Кстати, я сделал попробуйте заменить файл() использует в targetAssemblies для opencover Gradle плагина, но это не имело никакого эффекта. Из того, что я прочитал, должно было работать следующее.

opencover { 
    targetAssemblies = ['output/Scrpt.dll','output/Scrpt.Core.dll','output/Scrpt.SourceCitations.dll','output/ScrptUtilLib.dll'] 
    ignoreFailures = false 
} 
0

Вы необходимо установить фильтр opencover. Фильтр открытой крышки работает от включительных и эксклюзивных фильтров.

Первый фильтр всегда должен быть чем-то вроде:

+[*]* 

смысла включать каждый узел и каждый класс. затем добавьте в свои фильтры: +[*]* -[AssemblyName]* -[*AnotherName]*

Это очень просто. просто добавьте в универсальный включительный фильтр сначала, получите свои результаты, затем начните постепенно увеличивать количество фильтров по одному.

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

  • Нет связанных вопросов^_^