2013-11-25 48 views
1

我在断言时面临有线情况。 我主张每个列表中的数值(名单都应该包含即使是相同的值并不相同对象的列表)在webdriver和TestNG中断言问题

这里是我的断言代码:

for (int i=0 ; i< rst.size(); i++) 

     { 
      Assert.assertSame(l.get(i).getName(),rst.get(i).getText()); 

这里是我的回应越来越:

FAILED: srch("tsk", "http://frstmwarwebsrv2.orsyptst.com:9000/duobject? searchString=TSK&filtercheck=nameSWF&p.index=0&p.size=8") 
java.lang.AssertionError: expected [TSK(ACE700J)(000)(ACE700JU00)(000)] but found [TSK(ACE700J)(000)(ACE700JU00)(000)] 
     } 

我已经改变了上述由我仍然得到相同的错误建议:

Assert.assertSame ((l.get(i).getName().trim()), rst.get(i).getText().trim()); 
+0

首先修剪字符串。我怀疑这可能是一个空白问题。 – Arran

+0

感谢您的回答。在修剪之前是否需要将每个单元格的值转换为字符串?有没有其他方式做到这一点,而不转换为字符串? – Ziwdigforbugs

回答

1

的方法getName()getText()返回字符串,所以(假设你的问题只是开头和结尾的空格),所有你需要做的就是添加.trim(),像这样:

Assert.assertEquals(l.get(i).getName().trim(),rst.get(i).getText().trim()); 

看来,也即你想要做的是测试内存中的不同对象是有意义的等于。这意味着您要使用assertEquals(),而不是assertSame()

  • 的assertEquals()断言两个对象,其可以是或可以不是在存储器中不同的对象,是有意义的等于(或者,如你把它,具有相同的值)。
  • assertSame()声明两个对象实际上是内存中的同一个对象 - 所以如果你对两个对象使用“相同的值”但内存中不是相同的对象运行assertSame(),你的测试将失败。
+0

这工作,但只与assertEquals,不知道assertEquals和assertSame – Ziwdigforbugs

+0

我看到有什么区别。这意味着你的对象在内存中必须是不同的对象。我会修改我的答案来解决这个问题。 –

+0

是的,确实两个字符串是相同的,但对象是不同的,谢谢。 – Ziwdigforbugs