在执行单元测试期间,我希望我的程序在断言失败然后崩溃。
我的计划是测试程序有效崩溃,考虑到我准备测试的一些条件。为此,我想在我的测试中使用 ASSERT_ANY_THROW(statement_causing_crash); 。
并使用 - gtest_throw_on_failure 标志运行我的测试。
从命令行运行时的结果是:
那是什么,我还没有理解使用 ASSERT_ANY_THROW 和 - gtest_throw_on_failure ?
我也不想看到报告崩溃的窗口,因为测试应该定期自动运行。
顺便说一句,我还尝试过的其他方法是使用 ASSERT_DEATH 而不是 ASSERT_ANY_THROW ,并且它会更好,因为所有测试都会执行。
然而,.exe一直在崩溃,我需要按"关闭程序" 以便在崩溃后继续测试,这真的不好,因为我如上所述,这些测试自动运行,许多任务取决于测试结果。
答案 0 :(得分:0)
ASSERT_ANY_THROW 用于测试是否从正在测试的代码中抛出异常。 Read this
使用 - gtest_throw_on_failure 标志执行测试会使 Google Test断言失败 引发异常。这背后的想法是另一个测试框架将检测此异常并且未通过测试。完整信息here。
总之, ASSERT_ANY_THROW 以及 - gtest_throw_on_failure 标志与彼此无关。
顺便说一下,使用GCC我找不到办法避免弹出窗口并使用 ASSERT_DEATH 。我解决我的问题的方法是伪造断言,并在我的测试中使用它。我的断言假冒了一个异常,由 ASSERT_ANY_THROW 检测到。