2011-09-16 39 views
1

從表,我得到的字符串的名單,並想檢查時val != "A",串"x"表的列表中存在:使用斷言使用JUnit

for (int i = 0; i < NbRow; j++) 
{   
    if (val[i] == "A") 
    { 
    assertFalse("");   
    } 
    else 
    {   
    list.add(myTable.getValue(j, 0));  
    //need to check here the string exists in the list using assertTrue 
    } 
} 

如何檢查字符串X存在使用斷言?

+0

在我頭頂上,這可能是你想要的:'assertTrue(list.contains(「string」))'? – Aerus

+2

不要使用'=='比較字符串,使用'equals()',例如在你的上面的代碼中做''A'.equals(val [i])' - 如果'val [i]'應該是'null',那麼把常量字符串放在左邊可以防止'NullPointerException'。 –

回答

3

作爲一種替代方案:

import static org.hamcrest.Matchers.hasItem; 
import static org.junit.Assert.assertThat; 

assertThat(list, hasItem("string")); 

[編輯] ,如果你喜歡這樣:

if (val[i] == "A") 
{ 
    Assert.fail("");   
} 

可以寫爲:

import static org.hamcrest.core.Is.is; 
import static org.hamcrest.Matchers.not; 

assertThat(val[i], is(not(equalTo("A")))); 
+0

發佈的示例完成了。[[Collection.contains()'](http://download.oracle.com)沒有必要引入整個庫/javase/6/docs/api/java/util/Collection.html#contains(java.lang.Object)) –

+0

@ Philipp不,沒有必要,但是如果你喜歡以更多的DSL方式編寫你的斷言, D推薦它:) – Gandalf

1
if(!val.equals("A")) 
{ 
    assertTrue(list.contains("x")); 
} 
+0

請不要'!=',而是'!equals()':) –

+1

哎呦..感謝您糾正:D。我在考慮字符:D –

+0

爲了能夠像那樣使用assertTrue,您需要使用靜態方式導入Junit AssertTrue依賴項。 –

0

使用這個命令你想使用空指針異常afe字符串比較

if (!"A".equals(val[i])) 
    { 
    assertTrue(list.contains("x")); 
    }