我需要编写一个单元测试(gtest),它分别从数组a[]
和b[]
传递两个值。
示例:
a[] = {40, 45, 50 ,55, 60}
b[] = {2, 3, 5, 8, 9, 11}
我的测试用例会将这些数组(a[]
,b[]
)作为函数的参数传递。
有没有办法可以将两个数组都传递给测试用例?
答案 0 :(得分:2)
期望数组是静态的,然后您可以像下面的示例所示那样传递它们:
class ArrayTests : public UnitTest_SomeClass,
public testing::WithParamInterface<std::pair<int*, int*>>
{
};
TEST_P(ArrayTests, doSomething)
{
const auto pair = GetParam();
const auto a = pair.first;
const auto b = pair.second;
EXPECT_EQ(4, a[3]);
EXPECT_EQ(6, b[4]);
}
int a[]{ 1,2,3,4 };
int b[]{ 2,3,4,5,6 };
INSTANTIATE_TEST_CASE_P(UnitTest_SomeClass, ArrayTests, testing::Values(std::make_pair(a, b)));
您现在可以将不同的数组传递给测试:
int a0[]{ 1,2,3,4 };
int b0[]{ 2,3,4,5,6 };
int a1[]{ 7,8,9,10 };
int b1[]{ 2,3,4,5,6 };
INSTANTIATE_TEST_CASE_P(UnitTest_SomeClass, ArrayTests, testing::Values(std::make_pair(a0, b0), std::make_pair(a1, b1)));
我认为在这里使用std::vector
对于int数组会更容易,因为你可以访问元素的数量。 HTH