我在进行断言时遇到了有线情况。 我断言每个列表中的值(列表应该包含相同的值,即使不是相同对象的列表)

这是我的断言代码:

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()); 

请您参考如下方法:

方法 getName()getText() 都返回字符串,因此(假设您的问题只是前导和尾随空格)您需要做的就是添加 .trim(),如下所示:

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

似乎您想要做的就是测试内存中的不同对象是否有意义地相等。这意味着您要使用 assertEquals(),而不是 assertSame()

  • assertEquals() 断言两个对象(在内存中可能是不同的对象,也可能不是不同的对象)有意义地相等(或者,如您所说,具有相同的值)。
  • assertSame() 断言两个对象实际上是内存中的同一个对象 - 因此,如果您对具有“相同值”但内存中不是同一个对象的两个对象运行assertSame(),您的测试将会失败。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!