是否有用于夹具级设置/拆卸的等效物

Is there a gtest equivalent for fixture-level setup/teardown?

本文关键字:用于 夹具 设置 是否      更新时间:2023-10-16

所以,我知道gtest有"字面上"的夹具,但是构造函数/析构函数和设置/拆卸函数将在每次测试后执行,而不是在夹具中的整组测试之后执行。

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

您可以在测试夹具类中定义静态方法SetUpTestSuiteTearDownTestSuite

struct MyTest: ::testing::Test {
    static void SetUpTestSuite() {
        
    }
    static void TearDownTestSuite() {
        
    }
};

有关这方面的更多信息,请访问Googletest维基。

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

Google 测试

支持在测试(测试方法)级别、套件(类)级别以及程序级别进行设置和拆卸。后者是您要查找的那个:

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();
}