VS2008: Модульное тестирование с покрытием кода не работает с /CLR

Я пытаюсь настроить модульное тестирование с покрытием кода в VS2008 для DLL C++/CLI, скомпилированной с помощью /clr (не /clr:safe или /clr:pure — это должно быть /clr, потому что он использует MFC).

Модульные тесты работают отлично, но информация о покрытии работает только в том случае, если я компилирую с /clr:safe или /clr:pure. Для параметра /clr в окне Результаты покрытия кода отображается следующее сообщение:

Сгенерированы пустые результаты: ни один инструментированный двоичный файл не использовался. Просмотрите сведения о тестовом запуске на наличие проблем с инструментами.

Я также пытался "уйти в бездорожье", но когда я загружаю файл покрытия в VS он также содержит пустые результаты.

К сожалению, я не могу найти нигде, где бы конкретно говорилось, работает ли покрытие кода с /CLR, поэтому мне просто пришлось попробовать это самому.

Если это должно работать, может ли кто-нибудь увидеть, что я здесь делаю неправильно?


[Файл]->[Создать]->[Проект]
Выберите Библиотека классов, введите MyProj в качестве имени проекта, нажмите OK.

Щелкните правой кнопкой мыши проект MyProj, выберите [Свойства]
Выберите [Свойства конфигурации] -> [Общие]
Убедитесь, что для параметра "Поддержка общеязыковой среды выполнения" установлено значение /CLR.

Добавьте этот код в Class1:

public:
    static int calc() { return 69; }

Построить решение

[Тест]->[Новый тест]->[Модульный тест], нажмите OK, нажмите Создать

Добавьте этот код в TestMethod1:

Assert::AreEqual(MyProj::Class1::calc(), 69);

Щелкните правой кнопкой мыши проект TestProject1, выберите [Ссылки]
Нажмите "Добавить новую ссылку"
Выберите MyProj на вкладке "Проекты", нажмите "ОК", затем снова нажмите "ОК".

[Тест]->[Изменить конфигурацию тестового запуска]->[Локальный тестовый запуск]
Выберите [Покрытие кода]
Отметьте MyProj.dll, нажмите "Применить", нажмите "Закрыть".

[Тест]->[Выполнить]->[Все тесты в решении]

В окне Результаты теста показано, что TestMethod1 пройден.
В окне Результаты покрытия кода отображается следующее сообщение:

Сгенерированы пустые результаты: ни один инструментированный двоичный файл не использовался. Просмотрите сведения о тестовом запуске на наличие проблем с инструментами.


Щелкните правой кнопкой мыши проект MyProj, выберите [Свойства]
Выберите [Свойства конфигурации] -> [Общие]
Измените «Поддержка общеязыковой среды выполнения» на /CLR:SAFE или /CLR:PURE, нажмите OK.

Построить решение

[Тест]->[Выполнить]->[Все тесты в решении]

В окне Результаты теста показано, что TestMethod1 прошел успешно.
В окне Результаты покрытия кода теперь отображается правильная информация о покрытии.


person demoncodemonkey    schedule 31.03.2009    source источник
comment
Найдено на social.msdn. microsoft.com/Forums/en-US/vststest/thread/ — механизм покрытия кода может анализировать и собирать как управляемый, так и собственный код. Итак, кажется, что это должно работать...   -  person demoncodemonkey    schedule 31.03.2009


Ответы (2)


На основе http://msdn.microsoft.com/en-us/library/ms182534.aspx

1-проект должен быть в отладке

2.-в свойствах проекта необходимо выбрать платформу x86.

3 Отменить регистрацию тестируемого проекта в GAC.

person Jaimir Guerrero MVP    schedule 27.02.2010

Да, я думаю, что все это должно работать в проекте CLR: Safe. Я не совсем понимаю, почему, но я в той же лодке, что и вы.

person user531571    schedule 24.01.2011