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

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

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


EDIT: Мы уже пробовали предлагаемые инструменты:

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

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

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

Ответ 1

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

Дополнительную информацию об этом можно найти здесь: http://weblogs.asp.net/astopford/archive/2010/04/13/gallio-and-vs2010.aspx

Однако, если у вас есть деньги, потраченные на это, посмотрите http://TestDriven.Net

Ответ 2

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

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

Ответ 3

Вы можете заставить функциональность покрытия кода 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 не найден".

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

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

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

Ответ 4

Адриан,

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

Ответ 5

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