我在我的应用程序中使用gtest
和gmock
,我无法理解Setup()
中Teardown()
和gtest
函数的用途}。
根据我的理解,Setup()
函数将在每次执行TEST_F
之前调用,最后将调用Teardown()
。我们可以将::testing::Test
类constructor
和destructor
用于同一目的吗?究竟在哪里使用这些功能?
答案 0 :(得分:1)
您可以使用这些功能(重新)建立在所有测试用例之间共享的特定资源状态。特别是在您的测试用例中涉及异常的情况下。
从他们documentation开始说:
在以下极少数情况下,您可能仍希望使用SetUp()/ TearDown():
- 如果拆除操作可能抛出异常,则必须使用
TearDown()
而不是析构函数,因为抛出析构函数会导致未定义的行为,并且通常会立即终止您的程序。请注意,在编译器中启用异常时,可能会抛出许多标准库(如STL)。因此,如果要编写可以使用或不使用异常的可移植测试,则应该更喜欢TearDown()
。- 当指定了标志
--gtest_throw_on_failure
时,断言宏会抛出异常。因此,如果您计划使用此标志运行测试,则不应在析构函数中使用Google Test断言。- 在构造函数或析构函数中,您无法对此对象进行虚函数调用。 (您可以调用声明为virtual的方法,但它将静态绑定。)因此,如果需要调用将在派生类中重写的方法,则必须使用
SetUp()
/ {{1} }。