我需要使用Google测试用例插入的实际值来测试每个迭代器访问值,以下是我的代码段。
import java.util.Scanner;
public class Serioustake1
{
public static void main(String[]args)
{
int age;
String a = "Donald John Trump" ,b = "Height :",c = "Age :", d = "Name : ";
float height;
Scanner input = new Scanner(System.in);
System.out.print("Please enter the height of president:");
height=input.nextFloat();
System.out.print("Please enter the age of president:");
age=input.nextInt();
System.out.println("\n\n\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$");
System.out.println("\t\t\t\tPresident Details");
System.out.println("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$");
System formatString = String.format("%-15s%-10s\n%-15s%-10.1f\n%-15s%-10d",
d,a,b,height,c,age);
System.out.print(formatString);
}
}
在注释行上方,我需要使用迭代器值测试每个插入的值,我是这个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));
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)
}
}
我为此遇到了错误,请提出建议。
testEVTValSortedVector.cpp:193:错误:“ eTerriers [0]”中的“ operator []”不匹配 testEVTValSortedVector.cpp:193:错误:模板参数1无效 testEVTValSortedVector.cpp:194:错误:'eTerriers [1]中'operator []'不匹配:testEVTValSortedVector.cpp:194:'eTerriers [1]'testEVTValSortedVector.cpp中'operator []'不匹配: 195:错误:'eTerriers [2]'testEVTValSortedVector.cpp中的'operator []'不匹配:195:错误:'eTerriers [2]'中的'operator []'不匹配
答案 0 :(得分:1)
在所有情况下,您编写的任何循环都将执行。不要编写循环。
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