如何使用 google 测试用例测试迭代器值?

How to test iterator values using google test case?

我需要用 google 测试用例插入的实际值来测试每个迭代器访问值,下面是我的代码片段。

TEST(EVTValSortedVector,  StdIteratorAccess1)
{
EVTValSortedVector<Dog> eTerriers;

eTerriers.insert(Dog("Cairn Terrier",4));
eTerriers.insert(Dog("Irish Terrier",3));
eTerriers.insert(Dog("Schnauzer",3));

EVTValSortedVector<Dog>::iterator i;
for (i = eTerriers.begin(); i != eTerriers.end() ; i++ ) {
//  EXPECT_EQ((i), "Cairn Terrier"); // Here i need to check each iterator 
                                      //value with actual value inserted(here i wrote sample for only one element)
}
}

在注释行上方我需要用迭代器值测试每个插入的值,我是这个 google 测试用例的新手,请帮我解决这个问题。

我根据 "Caleth" 建议更新了我的代码,我收到了错误,我是这个 google 测试的新手,请建议,这是我更新的代码

TEST(EVTValSortedVector,  StdIteratorAccess1)
{
EVTValSortedVector<Dog> eTerriers;

eTerriers.insert(Dog("Cairn Terrier",4));
eTerriers.insert(Dog("Irish Terrier",3));
eTerriers.insert(Dog("Schnauzer",3));

EXPECT_EQ(eTerriers[0], "Cairn Terrier");
EXPECT_EQ(eTerriers[1], "Irish Terrier");
EXPECT_EQ(eTerriers[2], "Schnauzer");
}

我遇到了以下错误,请提出建议。

testEVTValSortedVector.cpp:193: 错误:“eTerriers[0]”中的“operator[]”不匹配 testEVTValSortedVector.cpp:193: 错误:模板参数 1 无效 testEVTValSortedVector.cpp:194:错误:“eTerriers[1]”中的“operator[]”不匹配testEVTValSortedVector.cpp:194:错误:“eTerriers[1]”中的“operator[]”不匹配testEVTValSortedVector.cpp:195:错误:“eTerriers[2]”中的“operator[]”不匹配testEVTValSortedVector.cpp:195:错误:“eTerriers[2]”中的“operator[]”不匹配

您编写的任何循环都将针对所有情况执行。不要写循环。

EXPECT_EQ(eTerriers[0], "Cairn Terrier");
EXPECT_EQ(eTerriers[1], "Irish Terrier");
EXPECT_EQ(eTerriers[2], "Schnauzer");

请注意,此测试并没有真正告诉您 EVTValSortedVector 保持排序顺序,您已经从排序的输入开始。

更好的测试是搜索相邻元素,看看列表中是否有一个元素是 >= 后面的元素。

// If we find no adjacent pair of elements `elemN, elemM` such that `elemN >= elemM`, then the list is in ascending order
EXPECT_EQ(std::adjacent_find(eTerriers.begin(), eTerriers.end(), std::greater_eq<Dog>{}), eTerriers.end());

此测试 eTerriers 不知道 任何 关于您开始使用的数据,这意味着它可以 生成 作为测试设置的一部分。这是一种property based test