Запуск тестов NUnit в Visual Studio 2010 с покрытием кода - PullRequest
21 голосов
/ 26 мая 2010

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

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


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

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

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

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

Ответы [ 5 ]

6 голосов
/ 25 июня 2010

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

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

6 голосов
/ 26 мая 2010

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

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

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

2 голосов
/ 02 сентября 2013

Вы можете заставить функционировать покрытия кода 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. У меня он работает из 2 разных мест, но здесь идет "nunit-console-runner.dll not found".

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

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

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

1 голос
/ 23 октября 2010

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

1 голос
/ 28 мая 2010

Адриан

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

...