Запуск тестов NUnit в Visual Studio 2010 с покрытием кода

Недавно мы обновили Visual Studio 2008 до Visual Studio 2010. В качестве части нашей кодовой базы у нас есть очень большой набор тестов NUnit. Мы хотели бы иметь возможность запускать эти модульные тесты в Visual Studio, но с включенным покрытием кода. У нас есть ReSharper, поэтому мы можем запускать тесты в Visual Studio, но он не позволяет инструменту покрытия кода делать свое дело и генерировать статистику покрытия.

Есть ли способ заставить эту работу работать, или нам придется преобразовать тесты в MSTest?


РЕДАКТИРОВАТЬ: Мы уже пробовали предлагаемые инструменты:

  • TestDriven.Net
    Он отлично запускает тесты NUnit в Visual Studio и даже работает с покрытием кода, но также включает тесты как часть покрываемых сборок. Кажется, что нет способа исключить тесты, но включить тестируемую сборку (наши тесты находятся в другой сборке, чем код, который они тестируют). Мы также действительно не хотим тратить дополнительные 2000 фунтов стерлингов, которые нам потребуются, чтобы получить TestDriven.net для всей команды.

  • Галлио
    Это не сработало. Чтобы получить результат покрытия, тесты необходимо запустить в средстве выполнения тестов Visual Studio. Gallio не предоставляет такую ​​поддержку для NUnit.

Есть еще идеи? Мы действительно нашли пару попыток с открытым исходным кодом, чтобы заставить этот тип вещей работать, но они устарели и долгое время не трогались (и, следовательно, не поддерживают VS2010).


person adrianbanks    schedule 26.05.2010    source источник
comment
Другая идея: отправить в Microsoft электронное письмо, чтобы сделать их инструменты более расширяемыми (например, запустить любую программу для анализа кода, как в Ncover).   -  person schoetbi    schedule 18.01.2011


Ответы (5)


Фреймворк автоматизации gallio - это проект с открытым исходным кодом, который должен позволить вам это сделать. Сайт находится по адресу http://www.gallio.org/ В последнем выпуске имеется начальная поддержка VS2010 с поработайте над ним в ночных сборках.

Подробнее об этом можно узнать здесь: http://weblogs.asp.net/astopford/archive/2010/04/13/gallio-and-vs2010.aspx

Однако, если у вас есть на это деньги, взгляните на http://TestDriven.Net.

person Wolfwyrd    schedule 26.05.2010
comment
+1 для TDD.Net. если вы используете nCover Community Edition для покрытия и обновили свои проекты до .net4, вам может потребоваться купить полную версию, поскольку, когда я пробовал, Community Edition не поддерживал сборки .net4. Хотя стоит вложить деньги. - person Pondidum; 26.05.2010
comment
TDD.net также имеет Персональную версию, которая полностью бесплатна для некоммерческого использования. - person Anindya Chatterjee; 08.09.2010

Jetbrains, похоже, решает эту проблему с помощью нового продукта под названием «dotCover». Он все еще находится в зачаточном состоянии, но, учитывая их послужной список, скоро должен стать крупным игроком.

До его выпуска вы можете «тестировать» ночные сборки, расположенные здесь .

person David Lynch    schedule 24.06.2010
comment
В качестве обновления dotCover общедоступен, в настоящее время это версия 1.1. - person Jura Gorohovsky; 12.07.2011

Функциональность покрытия кода VS 2010 можно заставить работать во время выполнения тестов NUnit, но это адская работа по настройке:

Настройте общий тест, который запускает nunit-console-x86.exe следующим образом:

Поддерживает ли покрытие кода VS2010 nUnit? (упрощенное описание xUnit)

http://msdn.microsoft.com/en-us/library/ms182624(v=vs.100).aspx (общее описание)

Удостовериться:

  • у вас активирован "инструмент на месте". Доверять развертыванию VS не получится
  • вы запускаете nunit-console-x86.exe. 64-битная версия работать не будет.
  • все библиотеки, которым нужны результаты покрытия кода, собраны в единую папку. Копирование их (например, по событию сборки) не сработает. (Для продвинутых: вы можете инструментировать библиотеки в другом месте, чем их выходная папка сборки, но это довольно сложно.)
  • папка со всеми библиотеками является рабочим каталогом для общего теста, и вы запускаете NUnit из нее.
  • вы указываете аргумент NUnit как относительный путь к рабочей папке.
  • вы дополнительно предоставляете NUnit параметр командной строки / noshadow

Когда вы копируете свои dll из разных папок в одну для тестов, могут происходить странные вещи. Я, например, получил обнадеживающий результат, что почти весь код для модульных тестов покрывается при запуске модульных тестов. Какая жалость, что это покрытие кода не нашло библиотеку, протестированную модульными тестами!

Итак, после настройки всех выходных каталогов сборки я столкнулся с самой странной проблемой: из этой папки NUnit не запускается. У меня он запущен из двух разных мест, но здесь идет «nunit-console-runner.dll не найден».

Я понял это только с инструментарием протестированной библиотеки в другом месте через:

  • тесты> редактировать настройки> локальные
  • Данные и диагностика> покрытие кода
  • деактивировать исходное местоположение и добавить библиотеку из тестовой папки

Сегодня это сработало мгновенно, но на днях я пытался определить правильные местоположения около часа. Я до сих пор не знаю, что я напортачил в тот день.

person No answer    schedule 02.09.2013

Адриан,

Взгляните на TestMatrix - он будет запускать ваши модульные тесты, проверяет покрытие кода и модульное тестирование профилирование производительности - и все это изначально интегрировано в Visual Studio.

person sergeb    schedule 28.05.2010
comment
Выглядит неплохо, но все же довольно дорого по сравнению с бесплатными инструментами, которые уже доступны нам в VS2010 Premium, за которые мы уже заплатили (много!). - person adrianbanks; 28.05.2010
comment
Верный аргумент, Адриан! Если бы инструменты VS2010, за которые вы заплатили, должны были делать то, что вы хотите ... Опять же, по сравнению с тем, что вы заплатили за версию VS2010 с покрытием кода, TestMatrix бесплатен, вы не согласны? - person sergeb; 29.05.2010

Я нашел проект Code Coverage Runner на CodePlex, который связывает тест VS и API NUnit через адаптер. На момент написания этой статьи проект не обновлялся с марта 2008 года, но он может удовлетворить ваши потребности.

person Steve Guidi    schedule 23.10.2010