2016-10-01 3 views
0

У меня есть unittests, использующий платформу тестирования Catch Test Phil Squared в сочетании с некоторым сторонним кодом, который использует assert.C++ Catch Framework Сделка с утверждением C?

Во время разработки часто бывает так, что некоторые утверждения об ошибках поднимаются и программа прерывается. В этих случаях Catch не сообщает никаких журналов и другой диагностической информации.

Есть ли способ «перенаправить» эту программу абортов и позволить Catch справиться с ней?

ответ

1

Вы не можете уловить утверждение, но вы можете переопределить его. Оригинал утверждает, что просто завершает работу программы, он не генерирует исключение, поэтому вы не можете его поймать. Но assert - это макрос, и вы можете отменить исходный макрос и определить свой собственный. В программах на C++ это общий трюк, чтобы переопределить assert таким образом, чтобы он выдавал исключение. И тогда вы сможете поймать его в тестах.