VS2008: модульное тестирование с покрытием кода не работает с / CLR - PullRequest
3 голосов
/ 31 марта 2009

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

Ответы [ 2 ]

0 голосов
/ 24 января 2011

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

0 голосов
/ 27 февраля 2010

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

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

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

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

...