我正在将Google测试与参数化测试类一起使用。我提供了测试用例的字符串列表,并且我知道我可以使用GetParam()
访问每个值。另外,我想确保所有标志都被覆盖,因此我需要知道测试用例中标志的数量是否与可用标志的数量相同。
这样的事情。
INSTANTIATE_TEST_CASE_P(Actions, TestActions
, ::testing::Values
(
"FLAG1"
, "FLAG2"
, "FLAG3"
)
);
TEST_F(TestActions, ActionCount)
{
// Check if a testcase was forgotten
EXPECT_EQ(gActions.size(), ParamCount());
}
TEST_P(TestActions, ActionEnabled)
{
string action = GetParam();
... do something here with param.
}
TEST_P(TestActions, ActionDisabled)
{
string action = GetParam();
... do something here with param.
}
答案 0 :(得分:0)
像往常一样,对于此类问题,直到我发布此问题并找到解决方案后不久,我才找到解决方案。
我从这个问题及其答案中得到了解决此问题的基本思路。 Google Tests ValuesIn with a global vector
因此,为完善起见,希望其他人能从中找到满意的解决方法,请在此处发布我的解决方案。
static std::vector<std::string> getKnownActions()
{
std::vector<std::string> actions = { "FLAG1", "FLAG2", "FLAG3"};
return actions;
}
INSTANTIATE_TEST_CASE_P(Actions, TestActions, ::testing::ValuesIn(getKnownActions()));
TEST_F(TestActions, ActionCount)
{
EXPECT_EQ(gActions.size(), getKnownActions().size());
}