2013-11-25 50 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