【问题标题】:Is there a gtest equivalent for fixture-level setup/teardown?夹具级设置/拆卸是否有 gtest 等效项?
【发布时间】:2015-02-04 00:08:25
【问题描述】:

所以,我知道 gtest 有“字面上”的固定装置,但构造函数/析构函数和设置/拆卸函数将在每次测试之后执行 而不是 在夹具

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

【问题讨论】:

    标签: c++ testing googletest


    【解决方案1】:

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

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

    更多信息请参见Googletest wiki

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

    【讨论】:

    • 注意正确的拼写。方法是SetUpTestCaseTearDownTestCase,前导大写,Up中的U也大写。
    • 虽然您的答案有效,但链接的 wiki 页面没有关于这些方法的其他信息,并且在存储库中快速搜索发现它们是 deprecated
    • 是的,它们已在库中重命名以匹配通用命名法。我已编辑答案以反映更改。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多