背景:我正在为传入流量编写一个Session表。该表应包含所有活动的UDP / TCP连接。
我正在使用googletest程序包来测试我的实现。 我根据夹具以下列格式准备参数化测试:
class SessionTest - initialize all staff.
struct ConnectionInfo - holds set of connection parameters (IPs, ports, etc..)
class SessionTestPrepare : SessionTest , testing::WithParamInterface<ConnectionInfo> - initialization.
TEST_P(SessionTestPrepare, test) - holds the test cases and logic.
INSTANTIATE_TEST_CASE_P(default, SessionTestPrepare_ testing::Values(
ConectionInfo{},
ConectionInfo{},
ConectionInfo{},
)
我注意到每次测试新参数时,都会调用SessionTest构造函数和Setup函数(当然还有析构函数和TearDown)。
注意:我的sessionTable在此声明并初始化。
答案 0 :(得分:4)
要在测试夹具中运行设置和拆卸一次,请使用.htaccess
和SetUpTestCase
代替TearDownTestCase
和SetUp
。 shared resources可以使用静态成员变量存储在fixture中。例如:
TearDown
在第一个参数测试开始之前调用 class SessionTestPrepare : public ::testing::WithParamInterface<ConnectionInfo> //...
{
public:
static void SetUpTestCase();
static void TearDownTestCase();
static ConnectionInfo * shared_data;
//...
}
,并在最后一个参数测试结束后调用SetUpTestCase
。您可以在这些函数中创建/删除共享资源。