Против 2013: точка останова в тесте cppunittest выдает исключение
Я тестирую свою статическую библиотеку C++11 в среде vs 2013. Я следовал этому хорошему уроку и тестирование + покрытие кода работают нормально.
Теперь мне нужно пошагово: я добавил точки останова и выполнил команду "Отладить выбранный тест", и я получил следующее сообщение: vstest.executionengine.exe вызвал точку останова, а стек вызовов привел меня к CppUnitTest.h:465
: (static_cast<ThisClass *>(this)->*method2)();
Например, при вызове корневого метода, который я хочу взломать. Нет способа увидеть код внутри этого вызова.
Мой вопрос: как взломать мой код во время отладки модульного теста Ms cpp?
1 ответ
Я нашел проблему. Некоторые точки останова были активированы внутри статической библиотеки, используемой тестовой DLL. Кажется, что точки останова внутри статической библиотеки генерируют что-то неправильное для тестовой среды.
Воспроизвести:
- создать C++ статический проект lib с простой функцией,
int foo(){ return 0;}
- создать проект test-dll
- добавить тестовую функцию, которая вызывает
foo
- установить точку останова в
foo
- выполнить "запустить выбранный тест": это будет работать
- выполнить "отладить выбранный тест": он заблокируется непосредственно перед вызовом класса, сгенерированного тестовым методом.
Я все еще заинтересован в объяснении этого неинтуитивного поведения.