Google 测试 - 使用“SetUpTestSuite”似乎不起作用

Posted

技术标签:

【中文标题】Google 测试 - 使用“SetUpTestSuite”似乎不起作用【英文标题】:Google Test - Using "SetUpTestSuite" doesn't seem to work 【发布时间】:2019-06-25 09:34:43 【问题描述】:

我正在尝试编写一个执行测试套件级别“设置”操作的测试套件。

我首先尝试编写一个简单的程序来尝试让它工作,但我没有任何运气来调用“SetUpTestSuite”方法。

#include <gtest/gtest.h>
#include <iostream>

class MyTest : public ::testing::Test

protected:
    static void SetUpTestSuite() 
        std::cerr << "TestSuiteSetup" << std::endl;
    

    static void TearDownTestSuite() 

    
;

TEST_F(MyTest, Case1) 
    std::cerr << "TESTING" << std::endl;


int main(int argc, char* argv[])

    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

当我运行它时,我得到:

[==========] Running 1 tests from 1 test cases.
[----------] Global test environment set-up.

[----------] 1 test from MyTest
[ RUN      ] MyTest.Case1
TESTING
[       OK ] MyTest.Case1 (0 ms)
[----------] 1 test from MyTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 tests from 1 test cases ran. (0 ms total)
[  PASSED  ] 1 tests.

由于某种原因,SetUpTestSuite() 从未被调用过。


我一直在阅读 Google 测试文档的 Sharing Resources Between Tests in the Same Suite 部分,但我不知道我做错了什么。

我有什么遗漏吗?


注意:我使用的是 gtest v1.6.0 - 它是我公司 Red Hat RPM 存储库中唯一可用的软件包。

【问题讨论】:

【参考方案1】:

文档似乎有误。这些方法应称为SetUpTestCase()TearDownTestCase()。至少在 Google Test 1.8.0 中。

【讨论】:

根据文档的名称 were recently changed 到 SetUpTestSuite()TearDownTestSuite() 你是怎么在那个里游泳的?【参考方案2】:

更改似乎尚未发布。这些文档似乎是 Master 分支的最新版本,而不是发布版本。

【讨论】:

【参考方案3】:

如果您的被测代码抛出异常,gtest 框架将捕获它们并仍然使用TestDownTestSuite() 关闭它们。但是,如果您在测试用例中启动一些线程并它们抛出,那么就没有什么可以捕获它们并且您的进程可能会调用terminate(),并且该进程将立即停止并且不会被拆除.一定要在工作线程中捕获异常,或者使用std::async创建std::futures,它会自动捕获异常并在原始线程的上下文中重新抛出它们(当您调用future.get()时)将被gtest捕获.

这发生在我身上,我开始使用不受支持的 TEST_TIMEOUT_BEGIN()TEST_TIMEOUT_FAIL_END() 宏黑客 (http://antonlipov.blogspot.com/2015/08/how-to-timeout-tests-in-gtest.html),然后异常开始发生。

【讨论】:

以上是关于Google 测试 - 使用“SetUpTestSuite”似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章

测试 Google 登录 Android

c++性能测试工具:google benchmark入门

Google Test测试框架使用(Linux平台)

如何通过 Google 测试捕捉断言?

转:google测试分享-测试经理

构建/运行 Google 测试