【发布时间】:2015-02-04 00:08:25
【问题描述】:
所以,我知道 gtest 有“字面上”的固定装置,但构造函数/析构函数和设置/拆卸函数将在每次测试之后执行 而不是 在夹具。
我可以想办法解决这个问题,但是否有一些我没有找到的内置支持?
【问题讨论】:
标签: c++ testing googletest
所以,我知道 gtest 有“字面上”的固定装置,但构造函数/析构函数和设置/拆卸函数将在每次测试之后执行 而不是 在夹具。
我可以想办法解决这个问题,但是否有一些我没有找到的内置支持?
【问题讨论】:
标签: c++ testing googletest
您可以在测试夹具类中定义静态方法 SetUpTestSuite 和 TearDownTestSuite:
struct MyTest: ::testing::Test {
static void SetUpTestSuite() {
}
static void TearDownTestSuite() {
}
};
更多信息请参见Googletest wiki。
注意这些静态方法名的拼写。
【讨论】:
SetUpTestCase和TearDownTestCase,前导大写,Up中的U也大写。
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();
}
【讨论】: