2

您好,我正在尝试使用 ArrayList 测试 assertEquals()。这是我的测试代码的一部分:

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]>

谁能指出我做错了什么?

4

4 回答 4

6

您正在将列表与字符串进行比较

尝试类似的东西

List<String> expected = new ArrayList<String>();
expected.add("a");
expected.add("b");
expected.add("c");
assertEquals(expected,n);
于 2013-07-23T19:54:48.520 回答
1

n是一个列表,"[a, b, c]"而是一个字符串 - 后者是前者的(可能)表示,但它们绝对不相等。

于 2013-07-23T19:55:33.283 回答
1

与 a 进行比较是String行不通的,但您不需要ArrayList专门创建一个来进行比较,任何List都可以。因此,您可以使用以下方法Arrays.asList()

assertEquals(Arrays.asList("a", "b", "c"), n);
于 2013-07-23T20:00:27.637 回答
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"});
于 2013-07-24T09:08:22.560 回答