我使用带有参数化测试类的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.
}
像往常一样,对于这些问题,我没有找到解决方案,直到我发布了这个问题,不久之后我找到了解决方案。
我从这个问题中得到了解决这个问题的基本思路和答案。谷歌使用全局向量测试ValuesIn
因此,为了完整性,希望其他人能找到它,我在这里发布了我的解决方案。
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());
}