Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
地图的Java测试_Java - Fatal编程技术网

地图的Java测试

地图的Java测试,java,Java,我已经为源文件创建了一个列表。我已经成功地创建了一个以标题值为键,下面的信息为值的映射。我已经测试并验证了该方法的所有功能 在我的下一个方法中,我实现了一个迭代器,它将获取下一个映射,以便在不同的类中进行处理。我正在尝试测试,以确保它正在做我认为它正在做的事情,并验证我希望它做的事情 以下是该方法的代码: public Map contact(List<Map<String, String>> list) { return list.iterator().next()

我已经为源文件创建了一个
列表
。我已经成功地创建了一个以标题值为键,下面的信息为值的映射。我已经测试并验证了该方法的所有功能

在我的下一个方法中,我实现了一个迭代器,它将获取下一个映射,以便在不同的类中进行处理。我正在尝试测试,以确保它正在做我认为它正在做的事情,并验证我希望它做的事情

以下是该方法的代码:

  public Map contact(List<Map<String, String>> list) {
return list.iterator().next(); 
}
公共地图联系人(列表){
返回list.iterator().next();
}
下面是我在测试类中的测试代码:

  @Test
public void contact() throws Exception {

List<Map<String, String>> list = this.main.sourceToMap(source1.readLine());
Map nextContact = this.main.contact(list);

System.out.println(list.get(0));

Assert.assertEquals(nextContact,
    "zip=70116, address=6649 N Blue Gum St, city=New Orleans, " +
        "web=http://www.bentonjohnbjr.com, company_name=\"Benton, John B Jr\", " +
        "county=Orleans, phone2=504-845-1427, last_name=Butt, state=LA, first_name=James, " +
        "email=jbutt@gmail.com, phone1=504-621-8927");
}
@测试
public void contact()引发异常{
List List=this.main.sourceToMap(source1.readLine());
Map nextContact=this.main.contact(列表);
System.out.println(list.get(0));
Assert.assertEquals(下一个联系人,
邮编:70116,地址:新奥尔良市蓝胶街北6649号+
“网络=http://www.bentonjohnbjr.com,公司名称=“Benton,John B Jr\”,“+
郡=奥尔良,电话2=504-845-1427,姓=巴特,州=洛杉矶,名=詹姆斯+
“电子邮件=jbutt@gmail.com,电话1=504-621-8927”);
}
最后,我得到了一个错误:

java.lang.AssertionError:应为:{zip=70116,地址=6649 N Blue Gum街,城市=web新奥尔良=http://www.bentonjohnbjr.com,company_name=“Benton,John B Jr”,county=Orleans,phone2=504-845-1427,last_name=Butt,state=LA,first_name=James,email=jbutt@gmail.com,phone1=504-621-8927}

Actual:zip=70116,地址=6649北蓝胶街,城市=新奥尔良,网址:=http://www.bentonjohnbjr.com,company_name=“Benton,John B Jr”,county=Orleans,phone2=504-845-1427,last_name=Butt,state=LA,first_name=James,email=jbutt@gmail.com,电话1=504-621-8927

期望值和实际值完全相同,只有一个不同。字符串前后各有一个“{}”

我想这是因为它需要一个映射而不是字符串,但我不知道输入什么才能使它成为一个映射而不是字符串

这是作业,但不是作业。这只是一个小测试,我想在继续之前证明一下


谢谢D

您的断言正在将
映射
字符串
进行比较。这当然是失败的,因为两者甚至不是同一类型。在错误消息中,您会看到
nextContact
对象的文本表示。这似乎是通过调用
Map
toString()
方法创建的,该方法生成内容周围带有
{}
的结果

要解决此问题,您应该比较地图中的实际值,例如

Assert.assertEquals(nextContact.get("zip"), "70116");

您的断言是将
映射
字符串
进行比较。这当然是失败的,因为两者甚至不是同一类型。在错误消息中,您会看到
nextContact
对象的文本表示。这似乎是通过调用
Map
toString()
方法创建的,该方法生成内容周围带有
{}
的结果

要解决此问题,您应该比较地图中的实际值,例如

Assert.assertEquals(nextContact.get("zip"), "70116");

如果你想以这种方式比较(整个地图内容与字符串)-考虑两件事:

  • Assert.assertEquals(..)
    方法中的第一个参数是预期值。因此,交换您的参数以匹配合同
  • 将大括号添加到预期值:
    Assert.assertEquals(
    {zip=70116,地址=6649北蓝胶街,城市=新奥尔良,'+
    “网络=http://www.bentonjohnbjr.com,公司名称=“Benton,John B Jr\”,“+
    郡=奥尔良,电话2=504-845-1427,姓=巴特,州=洛杉矶,名=詹姆斯+
    “电子邮件=jbutt@gmail.com,phone1=504-621-8927}”,nextContact.toString()
    
  • 向映射对象添加
    toString()
    方法调用,使两个对象具有相同的类型

  • 如果你想以这种方式比较(整个地图内容与字符串)-考虑两件事:

  • Assert.assertEquals(..)
    方法中的第一个参数是预期值。因此,交换您的参数以匹配合同
  • 将大括号添加到预期值:
    Assert.assertEquals(
    {zip=70116,地址=6649北蓝胶街,城市=新奥尔良,'+
    “网络=http://www.bentonjohnbjr.com,公司名称=“Benton,John B Jr\”,“+
    郡=奥尔良,电话2=504-845-1427,姓=巴特,州=洛杉矶,名=詹姆斯+
    “电子邮件=jbutt@gmail.com,phone1=504-621-8927}”,nextContact.toString()
    
  • 向映射对象添加
    toString()
    方法调用,使两个对象具有相同的类型

  • 我真的不建议测试这样的对象。您应该测试每个字段。这样的话,如果你在访问一个成员时有一些特定的逻辑,它就包含在这个范围内了;这是在类中测试方法。上面的测试代码是我已经创建的所有测试代码,用于测试每个字段和其他方法。我并没有试图用无关紧要的额外代码来污染这个问题。我真的不建议测试这样的对象。您应该测试每个字段。这样的话,如果你在访问一个成员时有一些特定的逻辑,它就包含在这个范围内了;这是在类中测试方法。上面的测试代码是我已经创建的所有测试代码,用于测试每个字段和其他方法。我不是想用无关紧要的额外代码来污染这个问题,是的。成功了。我甚至没有意识到这一点,因为我在想我写了一些不该写的东西。我知道当该方法应该返回一个映射时,实际值必须是一个字符串……我就是想不起来。另外,这使得测试更容易,因为我不必编写整个字符串。谢谢你,阿得瑞!对成功了。我甚至没有意识到这一点,因为我在想我写了一些我不喜欢的东西