В Windows моя утверждают макрос по существу выглядит следующим образом:Ловля на заказ утверждают в GoogleTest с помощью __debugbreak
#define MYASSERT(condition) (if (!(condition)) { ReportFailture(#condition, __FILE__, __LINE__, __FUNCTION__); __debugbreak(); }
И в тесте Google Я пытаюсь проверить выход в плохом состоянии, чтобы проверить связанных утверждений, и т.д.:
ASSERT_DEATH({ MYASSERT(false); }, "");
Однако все это он сообщить следующее сообщение:
Running main() from gtest_main.cc
..\Test\FormatUnitTest\Test_Format.cpp(59): error: Death test: { if (!(false)) { ReportFailture("false", ..\\Test\\UnitTest\\Test.cpp", 59, __FSTREXP __FUNCTION_
_ ); __debugbreak(); }; }
Result: illegal return in test statement.
Error msg:
[ DEATH ]
Кажется, что GoogleTest обрабатывает исключение Debug в обработчике структурированных исключений (SEH) в качестве специального случая. Тем не менее, я хочу поймать утверждение и проверить его содержимое.
Что здесь нужно сделать? Мне нужно определить специальный утвердить макрос для теста Google? Если да, то что он должен делать?
Я отмечаю, что замена моего утверждения утверждением (false) (включенным через assert.h) не вызывает эту проблему - что она делает по-другому?
Мне нужно будет переопределить свой пользовательский макрос подтверждения при использовании теста google для вызова 'std :: abort' вместо' __debugbreak() ', что является неудачным, но я могу жить с этим. – Steven