【发布时间】:2017-02-12 07:41:46
【问题描述】:
我想为一个对象编写单元测试。与普通夹具的不同之处在于,我不希望在每次测试之前都运行夹具。夹具的 SetUp() 应该只运行一次,然后应该执行几个测试。在这些测试之后,应该执行夹具的 TearDown()。 我在 C++ 中使用 googletest。有没有可能实现这种行为?
清除示例:
#include "gtest/gtest.h"
class socketClientFixture : public testing::Test
{
public:
CSocketClient *mClient;
void SetUp()
{
mClient = new CSocketClient();
mClient->connect();
}
void TearDown()
{
mClient->disconnect();
delete mClient;
}
TEST_F(socketClientFixture, TestCommandA)
{
EXPECT_TRUE(mClient->commandA());
}
TEST_F(socketClientFixture, TestCommandB)
{
EXPECT_TRUE(mClient->commandA());
}
int main(int ac, char* av[])
{
::testing::InitGoogleTest(&ac, av);
int res = RUN_ALL_TESTS();
return res;
}
在上面的示例中,我不希望在 TestCommandA 之后调用 TearDown(),在 TestCommandB 之前调用 SetUp()。 我想要实现的行为是:
- 设置()
- TestCommandA
- TestCommandB
- TearDown()
这是因为服务器在断开连接后需要一些时间来执行一些操作。
任何帮助表示赞赏。
【问题讨论】:
标签: c++ unit-testing googletest fixtures