Настройка NCover для NUnit в FinalBuilder

Решено: Посмотрите в нижней части этого вопроса для рабочей конфигурации


Я пытаюсь настроить NCover для использования в моем проекте FinalBuilder для проекта.NET 4.0 C#, но мой окончательный выходной файл покрытия не содержит данных покрытия.

Я использую:

Все инструменты являются последними официальными на сегодня.

Наконец-то мне удалось убедить FB запустить мои модульные тесты под NCover для проекта.NET 4.0, и я получил Tests run: 184, ..., что правильно.

Тем не менее, финал Coverage.xml Вывод файла из NCover практически пуст и выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<!-- saved from NCover 3.0 Export url='http://www.ncover.com/' -->
<coverage profilerVersion="3.3.2.6211" driverVersion="3.3.2" exportversion="3" viewdisplayname="" startTime="2010-04-22T08:55:33.7471316Z" measureTime="2010-04-22T08:55:35.3462915Z" projectName="" buildid="27c78ffa-c636-4002-a901-3211a0850b99" coveragenodeid="0" failed="false" satisfactorybranchthreshold="95" satisfactorycoveragethreshold="95" satisfactorycyclomaticcomplexitythreshold="20" satisfactoryfunctionthreshold="80" satisfactoryunvisitedsequencepoints="10" uiviewtype="TreeView" viewguid="C:\Dev\VS.NET\LVK.IoC\LVK.IoC.Tests\bin\Debug\Coverage.xml" viewfilterstyle="None" viewreportstyle="SequencePointCoveragePercentage" viewsortstyle="Name">
  <rebasedpaths />
  <filters />
  <documents>
    <doc id="0" excluded="false" url="None" cs="" csa="00000000-0000-0000-0000-000000000000" om="0" nid="0" />
  </documents>
</coverage>

Выходные данные в журнале FB:

...
***************** End Program Output *****************

Execution Time: 1,5992 s

Coverage Xml: C:\Dev\VS.NET\LVK.IoC\LVK.IoC.Tests\bin\Debug\Coverage.xml
NCover Success

Моя конфигурация шага FB для NCover:

  • NCover что?: Тестовое покрытие NUnit
  • Команда: C:\Program Files (x86)\NUnit 2.5.4\bin\net-2.0\nunit-console.exe
  • Аргументы команды: LVK.IoC.Tests.dll /noshadow /framework:4.0.30319 /process=single /nothread
    • Примечание: я пробовал с и без /process а также /nothread опции
  • Рабочий каталог: %FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug
  • Список сборок для профиля: %FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug\LVK.IoC.dll
    • Примечание: я попытался просто перечислить название сборки, как с расширением, так и без него.

Документация для шага FB не помогает, так как она перечисляет только второстепенные предложения для каждого свойства и не дает примеров или подсказок по устранению неполадок.

Поскольку я хочу перенести результаты покрытия в NDepend для запуска анализа во время сборки, я хочу, чтобы этот файл содержал необходимую мне информацию.

Я также использую TestDriven, и если я щелкну правой кнопкой мыши по файлу решения и выберу "Тестировать с NCover", откроется NCover-explorer с данными покрытия, и если я попрошу его показать мне папку с файлами покрытия, в ней появится XML-файл с той же структурой, что и выше, только со всеми данными, которые должны быть там, так что инструменты, которые у меня есть, несомненно, способны его создать.

Кто-нибудь знает, что я здесь неправильно настроил?


Решено: Следующая конфигурация наконец-то сработала для меня. Он выдает базовую статистику покрытия кода на начальной странице результатов сборки со ссылкой на подробный отчет со всем.

Поскольку я называю свои проекты модульных тестов такими же, как и проекты, которые они тестируют, только с суффиксом.Tests, я исключил их из покрытия кода. Кроме того, мне пришлось специально включать только мои собственные сборки (которые начинаются с LVK.), В противном случае я получал бы некоторые сборки, загружаемые бегуном TeamCity, что немного повлияло на мою статистику покрытия.

Сначала я установил последнюю версию инструментов (на момент редактирования):

  • NCover 3.4.8
  • TeamCity 5.1.2
  • NUnit 2.5.5

Конфигурация на экране сборки в TeamCity выглядит следующим образом:

  • Цели: перестроить
  • Конфигурация: отладка
  • Платформа: Любой процессор
  • Инструмент покрытия.NET: NCover (3.x)
  • .NET Runtime:.NET Framework 4.0, версия: собственная
  • Путь к NCover 3: %system.ncover.v3.x64.path% (это 64-разрядная версия Windows 2008 Server R2)
  • Дополнительные аргументы NCover:

    //ias LVK.*
    //eas .*Tests
    //eas LVK\.CodeQuality
    //ea LVK\.CodeQuality\.IgnoreCodeCoverageAttribute
    
  • Дополнительные аргументы отчетности NCover:

    //or FullCoverageReport:Html:{teamcity.report.path}
    
  • NUnit Runner: NUnit 2.5.5

  • Платформа.NET Runtime: автоматическая (MSIL), версия: 4.0
  • Запускать тесты из: **\bin\Debug*Tests.dll

2 ответа

Решение

Насколько я знаю, NCover не способен покрывать тесты для.NET 4.0. Они объявили о новой версии для.NET 4.0, но ее пока нет.

Найти информацию по теме здесь. Лично у меня нет опыта с этой задачей...

Обновление: они выпустили NCover 3.4 с поддержкой.NET 4.0. Возможно, Вы попробуете.

Я нашел ваш ответ из этой темы: NUnit не выполняет код Visual Studio 2010

В файл nunit-console-x86.exe.config, в разделе <configuration> добавлять:

<startup>
  <requiredRuntime version="v4.0.30319" />
</startup>

Под <runtime> добавлять

<loadFromRemoteSources enabled="true" />

Исправил это для меня. Я использую TeamCity, а не FinalBuilder, хотя.

Я также использую NCover 3.4.

Другие вопросы по тегам