Почему Visual Studio говорит, что "Кодовый охват не включен для этого тестового прогона", когда он включен?

В Visual Studio я просто создал простой unit тест для проверки написанного мною метода. Я хотел проверить покрытие кода, но окно "Покрытие кода" только когда-либо утверждает, что "Покрытие кода не включено для этого тестового прогона". Зачем? Замечания:

  1. Я уже следовал инструкциям на этой странице, то есть в тестовой конфигурации соответствующие сборки проверены на странице параметров покрытия кода.
  2. Я нажал "Выполнить тест", а не "Отладочный тест", что, как утверждают некоторые источники, является причиной этого.
  3. Я попытался запустить тест с текущей конфигурацией сборки, установленной на "Debug" или "Release"; ни один не работает.
  4. Я также следовал советам на этой странице (повторно выберите файл testrunconfig, выбрав Test => Select Active Test Run Configuration), но безрезультатно.

Тем не менее, я все равно получаю сообщение "Покрытие кода не включено для этого теста" каждый раз, когда я запускаю соответствующий тест. Как включить покрытие кода раз и навсегда?

Ответ 1

Раньше я боролся с MSTest во многих областях (включая покрытие кода) - честно говоря, он * не делает все возможное, чтобы упростить жизнь - особенно с дополнительным testrunconfig и т.д., Дублирующим многие вещи, которые уже есть в Csproj.

Тем не мение; чем я обнаружил, что TestDriven.NET имеет это встроенное (если у вас есть правильный выпуск Visual Studio для включения MSTest и покрытия):

alt text
(источник: mutantdesign.co.uk)

При этом будет использоваться ваша существующая тестовая среда (включая MSTest), но она будет перескакивать через все обычные циклы, чтобы включить тестовое покрытие, без необходимости вмешиваться в конфигурацию. Он даже работает с раскраской исходного кода (красный/синий, не проверен/протестирован и т.д.). Handy.

* = сам инструмент и интеграция с графическим интерфейсом

Ответ 2

Взгляните на эту страницу и посмотрите, помогает ли это: Советы по использованию покрытия кода в Visual Studio 2005

У него возникла проблема даже после установки файла конфигурации, о котором вы упомянули, и проблема была связана с сборками, расположенными на GAC.

Ответ 3

Если это для проекта С++, убедитесь, что у вас включен Profiling. Принесите свои свойства проекта → Связывание → Дополнительно. Найдите профиль и установите его для включения информации профилирования (/ПРОФИЛЬ).

Ответ 4

Обязательно запускайте свои тесты из окна Test View или Test List... не из окна результатов теста. Повторное выполнение тестов из окна результатов теста не всегда соответствует вашим настройкам конфигурации тестового прогона.

Ответ 5

В моем случае, когда я оспаривал эту проблему, у меня не было никакой конфигурации тестового запуска в меню Test->Select Active Test Run Configuration.
Я удалил/добавил файл .testrunconfig, и покрытие кода вернулось.
(VS2005 Team Edition)