我在进行断言时遇到了有线情况。 我断言每个列表中的值(列表应该包含相同的值,即使不是相同对象的列表)
这是我的断言代码:
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(),您的测试将会失败。