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