use*_*893 5 c++ testing googletest
因此,我知道gtest有“字面意义上的”固定装置,但是构造函数/析构函数和setup / teardown函数将在每次测试之后执行,而不是在固定装置中进行整套测试之后执行。
我可以想到解决此问题的方法,但是有没有我找不到的内置支持?
您可以定义静态方法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)