Настройка 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 what?: покрытие тестами NUnit.
  • Команда: C:\Program Files (x86)\NUnit 2.5.4\bin\net-2.0\nunit-console.exe
  • Command arguments: LVK.IoC.Tests.dll /noshadow /framework:4.0.30319 /process=single /nothread
    • Note: I've tried with and without the /process and /nothread options
  • Рабочий каталог: %FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug
  • List of assemblies to profile: %FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug\LVK.IoC.dll
    • Note: I've tried just listing the name of the assembly, both with and without the extension.

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

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

Я также использую TestDriven, и если я щелкну правой кнопкой мыши файл решения и выберу «Test with 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: авто (MSIL), версия: 4.0
  • Запускать тесты из: ** \ bin \ Debug * Tests.dll

person Lasse V. Karlsen    schedule 22.04.2010    source источник
comment
У меня такая же проблема с теми же настройками, даже при использовании последней версии NCover (3.4), которая поддерживает .NET 4.0.   -  person Ray    schedule 27.04.2010
comment
Я перестал на это сейчас смотреть, я также пробовал интегрировать NCover с NUnit для TeamCity 5.1, но это неизменно терпит неудачу, а документация по любому из инструментов, задействованных в этом, ниже номинальной по этим темам, поэтому это пробная версия - по ошибке, и мне, честно говоря, некогда с ней влезать. А пока я буду запускать покрытие кода из Visual Studio.   -  person Lasse V. Karlsen    schedule 27.04.2010
comment
@Lasse, тебе удалось что-то с этим продвинуться? У меня точно такая же проблема. у меня тоже работает с TD.NET. Также работает в cmd.exe. Впрочем, от FinalBuilder не было никакой радости.   -  person Damian Powell    schedule 29.05.2010
comment
Извините, я сдался, я разделил задание на несколько шагов TeamCity, чтобы я мог запускать важные части, используя только конфигурацию TeamCity, что позволило мне запустить NCover. Остальное я поместил в FinalBuilder, но у меня не было времени разбираться в этом, мне просто нужно было заставить что-то работать. Это стоило мне 3 этапа сборки на сервере TeamCity, и, поскольку я использую бесплатную версию max-20-build-steps, мне в конечном итоге придется с этим разобраться, но пока я не могу оправдать потраченное время. Мои извинения.   -  person Lasse V. Karlsen    schedule 29.05.2010
comment
Я принял конкретный ответ, потому что документально подтверждено, что он должен работать. На самом деле это не в моем случае, но я действительно не знаю, является ли это проблемой в моем случае или общей проблемой. Я был поклонником FinalBuilder в течение некоторого времени, но в последнее время я наткнулся на стену с некоторыми вещами, и поскольку документация в основном написана автоматизированной версией GhostDoc, это бесполезен, мягко говоря, поэтому я пока стараюсь избегать этого.   -  person Lasse V. Karlsen    schedule 29.05.2010
comment
Без проблем. Это сложно. Я отправил письмо Джейми Кэнсдейлу, чтобы спросить его, как ему удалось это сделать в TestDriven.net. Если он мне ответит, я отправлю ответ. Я совершенно убежден, что проблема как-то связана с .NET 4 и несколькими доменами приложений.   -  person Damian Powell    schedule 30.05.2010
comment
Обновление до TeamCity 5.1.2 и NCover 3.4.8 (последнее на момент публикации) заставило его работать, я обновлю свой вопрос с рабочей конфигурацией для дальнейшего использования.   -  person Lasse V. Karlsen    schedule 11.06.2010


Ответы (2)


Насколько мне известно, NCover не может покрывать тесты для .NET 4.0. Они анонсировали новую версию .NET 4.0, но ее еще нет.

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

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

person The Chairman    schedule 22.04.2010
comment
Что ж, он отлично работает из Visual Studio при вызове через TestDriven, затем он запускает NCover, NUnit и отлично представляет данные покрытия в программе NCoverExplorer. - person Lasse V. Karlsen; 23.04.2010
comment
Проблема в том, что у вас есть смесь .net 4.0 и 3.5 или 2.0, поскольку она переключится на отслеживание только сборок 3.5 и 2.0. - person Nigel Thorne; 01.06.2010

Я нашел ваш ответ в этой теме: 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.

person Ray    schedule 28.04.2010
comment
Нет, проблема не в этом. Без этого NUnit даже не запустится, а NCover вообще не создаст файл. Я уже сделал это, чтобы NUnit работал с .NET 4.0. - person Lasse V. Karlsen; 28.04.2010
comment
Хорошо, задолго до того, как я внес эти изменения, nUnit работал, но с теми же проблемами, что и у вас, впоследствии он работает правильно. - person Ray; 28.04.2010