У меня есть юнит-тесты с использованием фреймворка Catch Testing от Phil Squared в сочетании с некоторым сторонним кодом, использующим assert.
Во время разработки часто случается, что из-за некоторых ошибок появляются и программа прерывается. В этих случаях Catch не сообщает никаких журналов и другой диагностической информации.
Есть ли способ «перенаправить» эту программу на аборт и позволить Catch справиться с этим?
Вы не можете поймать утверждение, но вы можете переопределить его. Оригинальный assert просто завершает программу, он не выдает исключение, поэтому вы не можете его перехватить. Но assert — это макрос, и вы можете отменить оригинальный макрос и определить свой собственный. В программах на C ++ распространенным трюком является переопределение утверждения таким образом, чтобы оно вызывало исключение. И тогда вы сможете поймать его в тестах.
Других решений пока нет …