googletest中参数化测试的一般问题
背景:我正在为传入流量编写会话表。此表应包含所有活动的UDP/TCP连接 我正在使用googletest包来测试我的实现。 我准备了一个基于夹具的参数化测试,格式如下:googletest中参数化测试的一般问题,googletest,Googletest,背景:我正在为传入流量编写会话表。此表应包含所有活动的UDP/TCP连接 我正在使用googletest包来测试我的实现。 我准备了一个基于夹具的参数化测试,格式如下: class SessionTest - initialize all staff. struct ConnectionInfo - holds set of connection parameters (IPs, ports, etc..) class SessionTestPrepare : SessionTest , t
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{},
class SessionTest-初始化所有员工。
struct ConnectionInfo—保存一组连接参数(IP、端口等)
类SessionTestPrepare:SessionTest,testing::WithParamInterface-初始化。
TEST_P(SessionTestPrepare,TEST)-保存测试用例和逻辑。
实例化测试案例(默认,会话测试准备测试::值(
连接信息{},
连接信息{},
连接信息{},
)
我注意到,每次测试新参数时,都会调用SessionTest构造函数和Setup函数(当然还有析构函数和TearDown)。注意:我的sessionable在这里声明并初始化
要在测试夹具中仅运行一次设置和拆卸,请使用
SetUpTestCase
和TearDownTestCase
而不是SetUp
和TearDown
。可以使用静态成员变量将设置和拆卸存储在夹具中。例如:
class SessionTestPrepare : public ::testing::WithParamInterface<ConnectionInfo> //...
{
public:
static void SetUpTestCase();
static void TearDownTestCase();
static ConnectionInfo * shared_data;
//...
}
class SessionTestPrepare:public::testing::WithParamInterface/。。。
{
公众:
静态void SetUpTestCase();
静态void TearDownTestCase();
静态连接信息*共享数据;
//...
}
SetUpTestCase
在第一个参数测试开始之前被调用,而teardowndtestcase
在最后一个参数测试结束之后被调用。您可以在这些函数中创建/删除共享资源。要在测试夹具中只运行一次设置和拆卸,请使用SetUpTestCase
和teardowndtestcase
而不是设置
和拆卸
。并且可以使用静态成员变量将存储在夹具中。例如:
class SessionTestPrepare : public ::testing::WithParamInterface<ConnectionInfo> //...
{
public:
static void SetUpTestCase();
static void TearDownTestCase();
static ConnectionInfo * shared_data;
//...
}
class SessionTestPrepare:public::testing::WithParamInterface/。。。
{
公众:
静态void SetUpTestCase();
静态void TearDownTestCase();
静态连接信息*共享数据;
//...
}
在第一个参数测试开始之前调用SetUpTestCase
,在最后一个参数测试结束之后调用TearDownTestCase
。您可以在这些函数中创建/删除共享资源