【发布时间】:2016-06-15 21:40:11
【问题描述】:
我开始使用“Catch”单元测试框架,到目前为止它真的很棒。我非常痛苦地使用了 VS 内置的单元测试框架。
我注意到宏 REQUIRE_THROWS_AS 的行为与预期不同
来自文档:
REQUIRE_THROWS_AS( expression, exception type ) and CHECK_THROWS_AS( expression, exception type )预计在执行期间会抛出指定类型的异常 表达式的评估。
当我尝试写作时
TEST_CASE("some test") {
SECTION("vector throws") {
std::vector<int> vec;
REQUIRE_THROWS_AS(vec.at(10), std::logic_error);
}
}
我预计测试会失败,但它却说测试通过了。框架中是否有错误或我错了?
【问题讨论】:
-
你调用
vec.at(10)-> 它抛出异常std::out_of_range-> 你说你希望抛出异常std::logic_error->std::out_of_range是std::logic_error因为它是它的一个子类型 -> 一切都很好
标签: c++ unit-testing testing catch-unit-test