2

我使用 Phil Squared 的 Catch 测试框架和一些使用断言的第三方代码进行单元测试。

在开发过程中,经常会发生一些错误断言,然后程序被中止。在这些情况下,Catch 不会报告任何日志和其他诊断信息。

有没有办法“重定向”这个程序流产并让 Catch 处理它?

4

1 回答 1

2

你无法捕捉断言,但你可以重新定义它。原始断言只是终止程序,它不会抛出异常,因此您无法捕获它。但是 assert 是一个宏,您可以取消定义原始宏并定义自己的宏。在 C++ 程序中,以这种方式重新定义断言是一种常见的技巧,它会抛出异常。然后你将能够在测试中捕捉到它。

于 2016-10-01T16:05:33.770 回答