Я пытаюсь настроить модульное тестирование с покрытием кода в VS2008 для DLL C ++ / CLI, которая скомпилирована с / clr (не / clr: safe или / clr: pure - оно имеет быть / clr, потому что он использует MFC).
Модульные тесты работают отлично, но информация о покрытии работает, только если я компилирую с / clr: safe или / clr: pure. Для / clr в окне Результаты покрытия кода отображается следующее сообщение:
Сгенерированы пустые результаты: ни один из
Бинарный инструмент был использован. смотреть на
Детали тестового прогона для любого
проблемы с приборами.
Я также пытался " поехать по бездорожью ", но когда я загружаю файл покрытия в VS, он также содержит пустые результаты.
К сожалению, я не могу найти нигде, где конкретно указано, работает ли Code Coverage с / CLR, поэтому мне просто пришлось попробовать это самому.
Если это должно сработать, кто-нибудь может увидеть, что я здесь делаю неправильно?
[Файл] -> [New] -> [проект]
Выберите Библиотека классов , введите MyProj в качестве имени проекта, нажмите OK
Щелкните правой кнопкой мыши проект MyProj, выберите [Свойства]
Выберите [Свойства конфигурации] -> [Общие]
Убедитесь, что для «Common Language Runtime support» установлено значение / CLR
Добавьте этот код к Class1 :
public:
static int calc() { return 69; }
Построение решения
[Test] -> [New Test] -> [Unit Test], нажмите OK, нажмите Create
Добавьте этот код к TestMethod1 :
Assert::AreEqual(MyProj::Class1::calc(), 69);
Щелкните правой кнопкой мыши проект TestProject1, выберите [Ссылки]
Нажмите «Добавить новую ссылку»
Выберите MyProj на вкладке «Проекты», нажмите «ОК», еще раз нажмите «ОК»
[Test] -> [Edit Configuration Run Configuration] -> [Local Test Run]
Выберите [Покрытие кода]
Проверьте MyProj.dll , нажмите Применить, нажмите Закрыть
[Тест] -> [Выполнить] -> [Все тесты в растворе]
Окно Результаты теста показывает, что TestMethod1 прошел.
В окне Результаты покрытия кода появится следующее сообщение:
Сгенерированы пустые результаты: ни один из
Бинарный инструмент был использован. смотреть на
Детали тестового прогона для любого
проблемы с приборами.
Щелкните правой кнопкой мыши по проекту MyProj, выберите [Свойства]
Выберите [Свойства конфигурации] -> [Общие]
Измените «Common Language Runtime support» на / CLR: SAFE или / CLR: PURE , нажмите OK
Построение решения
[Тест] -> [Выполнить] -> [Все тесты в растворе]
Окно Результаты теста показывает, что TestMethod1 прошел.
В окне Результаты покрытия кода теперь отображается правильная информация о покрытии.