2013-07-23 67 views
2

你好,我試圖用ArrayList測試assertEquals()。 這是我的測試代碼的一部分:在單元測試中比較ArrayList

ArrayList<String> n = new ArrayList<String>(); 
n.add("a"); 
n.add("b"); 
n.add("c"); 
assertEquals(n, "[a, b, c]"); 

看起來完全一樣給我,但JUnit的說

junit.framework.AssertionFailedError: expected:<[a, b, c]> but was:<[a, b, c]> 

任何人都可以指出我做了什麼錯?

回答

6

你一個列表進行比較,以字符串

試着這麼做

List<String> expected = new ArrayList<String>(); 
expected.add("a"); 
expected.add("b"); 
expected.add("c"); 
assertEquals(expected,n); 
1

n是一個列表,而"[a, b, c]"是一個字符串 - 後者是前者,但他們的(可能)表示絕對不是平等的。

1

String比較將不起作用,但您不需要專門創建ArrayList進行比較,任何List都可以。因此,您可以使用的方法Arrays.asList()

assertEquals(Arrays.asList("a", "b", "c"), n); 
0

比較,而不是列出數組:

List<String> expected = new ArrayList<String>(); 
    expected.add("1"); 
    expected.add("2"); 
    expected.add("3"); 
    Assert.assertArrayEquals(expected.toArray(), new String[]{"1", "2", "3"});