TearDown()和Setup()函数有什么好处?

时间:2016-07-21 15:11:58

标签: c++ googletest

我在我的应用程序中使用gtestgmock,我无法理解Setup()Teardown()gtest函数的用途}。 根据我的理解,Setup()函数将在每次执行TEST_F之前调用,最后将调用Teardown()。我们可以将::testing::Testconstructordestructor用于同一目的吗?究竟在哪里使用这些功能?

1 个答案:

答案 0 :(得分:1)

您可以使用这些功能(重新)建立在所有测试用例之间共享的特定资源状态。特别是在您的测试用例中涉及异常的情况下。

从他们documentation开始说:

  

在以下极少数情况下,您可能仍希望使用SetUp()/ TearDown():

     
      
  • 如果拆除操作可能抛出异常,则必须使用TearDown()而不是析构函数,因为抛出析构函数会导致未定义的行为,并且通常会立即终止您的程序。请注意,在编译器中启用异常时,可能会抛出许多标准库(如STL)。因此,如果要编写可以使用或不使用异常的可移植测试,则应该更喜欢TearDown()
  •   
  • 当指定了标志--gtest_throw_on_failure时,断言宏会抛出异常。因此,如果您计划使用此标志运行测试,则不应在析构函数中使用Google Test断言。
  •   
  • 在构造函数或析构函数中,您无法对此对象进行虚函数调用。 (您可以调用声明为virtual的方法,但它将静态绑定。)因此,如果需要调用将在派生类中重写的方法,则必须使用SetUp() / {{1} }。
  •