wor*_*bin 5 c++ unit-testing googletest
我目前有一套测试,它们是测试夹具的一部分。我也想用不同的测试夹具运行相同的测试集。
如何在不实际复制粘贴测试和“手动”更改测试夹具名称的情况下执行此操作(如下所示)?
class Trivial_Test : public ::testing::Test
{
void SetUp()
{
ASSERT_TRUE(SUCCESS == init_logger());
initial_condition = 0;
}
void TearDown()
{
shutdown_logger();
}
protected:
int initial_condition;
};
class Trivial_Test_01 : public ::testing::Test
{
void SetUp()
{
ASSERT_TRUE(SUCCESS == init_logger());
initial_condition = 1;
}
void TearDown()
{
shutdown_logger();
}
protected:
int initial_condition;
};
TEST_F(Trivial_Test, valid_input_1)
{
EXPECT_TRUE(random_num()+initial_condition < 255);
}
TEST_F(Trivial_Test_01, valid_input_1)
{
EXPECT_TRUE(random_num()+initial_condition < 255);
}
Run Code Online (Sandbox Code Playgroud)
是否有关联的一个更简洁的方式valid_input_1既Trivial_Test和Trivial_Test_01?
PS - 上面显示的测试用例是一个微不足道的测试,它名义上代表了我的实际情况,但远不及我实际处理的测试用例或测试夹具的复杂性。
您考虑过价值参数化测试吗?
也许对于您的实际测试用例来说,它增加了太多的复杂性,但您的示例如下所示:
class Trivial_Test : public ::testing::TestWithParam<int>
{
void SetUp()
{
ASSERT_TRUE(SUCCESS == init_logger());
}
void TearDown()
{
shutdown_logger();
}
};
TEST_F(Trivial_Test, valid_input)
{
int initial_condition = GetParam();
EXPECT_TRUE(random_num()+initial_condition < 255);
}
INSTANTIATE_TEST_CASE_P(ValidInput,
Trivial_Test,
::testing::Values(0, 1));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2559 次 |
| 最近记录: |