просить совета по покрытию кода и модульному тесту

Я использую VS2010 + C # + .Net 4.0. Я хочу выполнить покрытие кода для модульных тестов. После исследования у меня есть два варианта, и мой вопрос: я хочу знать плюсы и минусы таких двух инструментов / вариантов.

  1. Использование встроенных инструментов, отличных от VS, таких как ncover;
  2. Используя встроенный инструмент VSTS, например,

http://msdn.microsoft.com/en-us/library/dd299398%28VS.90%29.aspx

http://msdn.microsoft.com/en-us/library/ms379625%28VS.80%29.aspx#vstsunittesting_topic7


person George2    schedule 01.11.2010    source источник


Ответы (2)


При использовании обоих инструментов они работают примерно одинаково. Вы запускаете тесты, а затем просматриваете отчет. Оба инструмента обеспечивают выделение кода, чтобы показать, какие строки кода имеют покрытие, а какие нет. MsTest не предоставляет намного больше информации, но NCover предоставляет множество отчетов в формате HTML и может определять тенденции покрытия кода с течением времени. Подобные вещи могут быть полезны.

Теперь о различиях. Инструменты покрытия MsTest действительно работают только с модульными тестами MsTest. Он не может легко покрыть тесты, написанные с использованием NUnit (или других сред тестирования) из IDE. Это можно сделать, но это займет некоторое время и требует вызова инструментов покрытия из командной строки и настройки ваших сборок вручную. Опять же, это можно сделать, но не очень легко, особенно для новичка. NCover более гибкий и может работать с большинством фреймворков для тестирования. Кроме того, я обнаружил, что NCover проще запускать с помощью сервера автоматической сборки. Мне никогда не удавалось автоматизировать покрытие MsTest в CruiseControl, но я предполагаю, что MS заставляет его работать в Team Foundation Server.

person Matthew Kubicina    schedule 01.11.2010
comment
Круто, Мэтью, для того, что вы упомянули для сравнений, не могли бы вы предоставить несколько опубликованных документов, чтобы я мог учиться дальше сам. - person George2; 01.11.2010
comment
Мне было трудно найти прямое сравнение двух инструментов, но вот одна статья: gojisoft.com/blog/2010/01/27/code-coverage-for-net-compared - person Matthew Kubicina; 02.11.2010

Еще пара небольших заметок, которые могут быть полезны:

  1. К сожалению, бесплатная версия NCover не работает со средой выполнения .Net 4.0.
  2. Если вас интересует интеграция с CruiseControl.Net, вы можете использовать средство запуска тестов Gallio для запуска тестов MSTest. См. ​​Галлио: невозможно запустить тесты из-за исполняемого файла MSTest не найдено
person Ivan Gerken    schedule 01.11.2010
comment
Спасибо, Иван! Какие недостатки встроенного инструмента VSTS по сравнению с NCover? - person George2; 01.11.2010