catch c++测试框架中REQUIRE_NOTHROW的要点

Bar*_*uch 5 catch-unit-test

这个断言的要点是什么REQUIRE_NOTHROW?如果我只是放置一条语句并且不将其包装在任何断言宏中,那么如果它无论如何抛出都会失败?

JBR*_*son 7

这是 TEST_CASE 失败和单个断言失败之间的区别。REQUIRE 宏确保下一行在失败时不会被执行。相反,CHECK 宏可以将测试用例标记为失败但继续。

考虑这个例子:

REQUIRE_NOTHROW(parseInput(validInput));
REQUIRE_THROWS(parseInput(errorInput));
REQUIRE_THROWS(parseInput(NULL));
Run Code Online (Sandbox Code Playgroud)

因此,我们明确要求传递有效输入不会导致异常,但错误输入会导致异常。如果我们不使用REQUIRE_NOTHROW()宏,那么测试将会失败,但是我们需要破译失败的位置 - 异常可能来自测试代码的其他行。