Против 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
  • выполнить "запустить выбранный тест": это будет работать
  • выполнить "отладить выбранный тест": он заблокируется непосредственно перед вызовом класса, сгенерированного тестовым методом.

Я все еще заинтересован в объяснении этого неинтуитивного поведения.

Другие вопросы по тегам