【问题标题】:How do I test an ArrayList in jUnit?如何在 jUnit 中测试 ArrayList?
【发布时间】:2015-09-13 00:20:11
【问题描述】:

我有一个数字列表,我正在尝试编写一个 jUnit 测试来检查以确保该列表被正确填充和返回。我遇到了一个问题,我不知道如何编写正确的 jUnit 测试。这是我想出的:

ArrayListPractice.java

import java.util.ArrayList;

public class ArrayListPractice {
    ArrayList<String> myList = new ArrayList<String>();

    public ArrayList<String> addToList(String item) {
        myList.add(item);
        return myList;
    }

    public ArrayList<String> printList(ArrayList<String> myList) {
        for (String currentString : myList) {
            System.out.println(currentString);
        }
        return myList;
    }
}

ArrayListPracticeTest.java

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class ArrayListPracticeTest {
    ArrayList<String> myList = new ArrayList<>();
    ArrayListPractice alp;

    @Before
    public void setUp() throws Exception {
        alp = new ArrayListPractice();
        alp.addToList("ONE");
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testPrintList() {
        String expected = "ONE";
        ArrayList<String> actual = alp.printList(myList);
        assertEquals("not the correct list", expected, actual);
    }
}

【问题讨论】:

  • 您认为void 是什么意思?你觉得assertEquals 是做什么的?
  • @SotiriosDelimanolis void 表示没有返回值,assertEquals 用于检查实际值和期望值是否相等
  • 好的,现在将这些答案放在一起,同时阅读编译器给出的错误消息。
  • @SotiriosDelimanolis 我对 Java 还是很陌生,所以如果我不能尽快理解,我深表歉意。我已经更改了上面的代码以反映我所做的更改,现在我收到了 NullPointerException 错误。

标签: java list junit


【解决方案1】:

虽然我对这段代码的质量有深刻保留意见,但问题是您在这里没有将苹果与苹果进行比较。你期望String,但你得到的是ArrayList。因此,测试因误报而失败;你没有正确设置测试

解决方法是确保您所期望的就是您实际得到的。

final ArrayList<String> expected = Arrays.asList("ONE");

现在,要修复 实际 代码,我建议您去掉该参数。我把它留给读者作为练习。

【讨论】:

  • 我更喜欢final List&lt;String&gt; expected = Arrays.asList("ONE");,因为它没有使用新手可能无法理解的技术:P。
  • @Tom:这是一个很好的问题,我已经更正了它,但是对于一个决定一揽子复制他们在 Internet 上找到的任何代码并给它一个在他们的应用程序中尝试。
  • 您也可以更正变量类型:P。是的,这会很糟糕,但我想我们知道这会发生。也许不是这个OP,而是其他读者:(。
  • @Makoto 我正在检查我的代码,试图应用上面的更改,你提到我的代码质量不是最好的。你有什么建议让我做得更好?
  • @user3767997 两件事:为什么printList 期待一个论点?并且:What does it mean to "program to an interface"?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2020-10-11
相关资源
最近更新 更多