夹具级别的安装/拆卸是否有等效的gtest?

use*_*893 5 c++ testing googletest

因此,我知道gtest有“字面意义上的”固定装置,但是构造函数/析构函数和setup / teardown函数将在每次测试之后执行而不是在固定装置中进行整套测试之后执行

我可以想到解决此问题的方法,但是有没有我找不到的内置支持?

Vla*_*sev 6

您可以定义静态方法SetUpTestCase,并TearDownTestCase在您的测试夹具类:

struct MyTest: ::testing::Test {
    static void SetUpTestSuite() {

    }

    static void TearDownTestSuite() {

    }
};
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见Googletest Wiki

请注意这些静态方法名称的拼写。


小智 5

Google Test 支持测试(测试方法)级别、套件(类)级别以及程序级别的设置和拆卸。后者是您要寻找的:

https://github.com/google/googletest/blob/master/docs/advanced.md#global-set-up-and-tear-down描述了如何派生和注册自己的环境夹具类来实现设置和拆卸方法,在测试运行程序执行期间仅调用一次。

简而言之,你可以做类似的事情:

class SetupEnvironment : public ::testing::Environment
{
public:
  virtual ~SetupEnvironment();
  void SetUp() override { ... }
  void TearDown() override { ... }
};

int main(int argc, char* argv[])
{
  testing::AddGlobalTestEnvironment(new SetupEnvironment());
  return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)