在Google测试中使用EXPECT_NO_THROW有好处吗?

问题描述 投票:0回答:1

在 gtest 中,可以使用 EXPECT_NO_THROW 宏来验证操作是否不会引发异常。

当代码确实抛出异常时,测试用例将被标记为失败。 但是,如果使用 EXPECT_NO_THROW 宏并引发异常,则测试用例也会失败。

据我观察,以下功能在功能上是等效的:

sut.do_action();
EXPECT_NO_THROW(sut.do_action());

那么,使用 EXPECT_NO_THROW 有什么好处或理由吗?或者它的唯一目的是使测试用例规范更加明确?

googletest
1个回答
3
投票

太明显了。

  1. 它使您能够在抛出异常时输出一些内容
    EXPECT_NO_THROW(sut.do_action()) << "Must not throw";
    
  2. 它允许测试用例在抛出异常后继续
    sut.do_action();
    std::cout << "Continue\n";  // does not output
    
    EXPECT_NO_THROW(sut.do_action());
    std::cout << "Continue\n";  // outputs regardless of an exception
    
© www.soinside.com 2019 - 2024. All rights reserved.