参数化Google测试中的值数

时间:2018-11-20 10:25:08

标签: c++ googletest

我正在将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.
}

1 个答案:

答案 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());
}