有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数组列表:构造函数中的默认项?

好吧,事情是这样的。我正在尝试为我设置的库类设置测试代码。现在,我应该调整我的构造函数,在添加一个新的条目之前,在数组列表中自动创建一个条目。这是我的构造器:

public DvrLibrary()
{
    recordings = new ArrayList < DvrRecording > ();

    DvrRecording initialRecording = new DvrRecording();
    initialRecording.setTitle("Family Guy");
    initialRecording.setStartTime("10:00pm");
    for (int i = 0; i < 3; ++i) { initialRecording.increaseTime(); }

    recordings.add(initialRecording);
}

当我创建测试用例时,我的测试代码如下:

public void testARecording()
{
    DvrLibrary testLibrary = new DvrLibrary();
    ArrayList < DvrRecording > testList = new ArrayList < DvrRecording > ();

    DvrRecording testRecording = new DvrRecording();
    testRecording.setTitle("Lost");
    testRecording.setStartTime("Later");
    for (int i = 0; i < 3; ++i) { testRecording.increaseTime(); }

    testLibrary.addRecording(testRecording);
    testList.add(testRecording);       

    assertEquals(testLibrary.getRecordings(), testList);
}

我的问题是,当我运行实际的测试时,我很确定,默认值没有被调用。它返回了一条失败的错误消息,告诉我它希望找到两个条目,但只找到一个。我试图删除测试代码正在创建的新条目,错误显示应该有一个条目,但什么也没有找到

这让我相信,我在实际代码中设置构造函数的方式有问题,但我一辈子都搞不清楚自己搞砸了什么。当我去寻求帮助时,和我交谈的那个人说,我不确定出了什么问题,但你可能把事情搞砸了。但我不知道怎么了

有人有什么意见吗?我真的很感激。谢谢


共 (3) 个答案

  1. # 1 楼答案

    assertEquals首先需要“预期”参数,然后是“测试”参数。这可能只是一个普通的测试失败,除非你混淆了论点

  2. # 2 楼答案

    因为assertEquals签名是(expected, actual),所以错误消息是反向的。应该是“期待一个,得到两个”

    您的实际列表是正确的,按照代码的指示,它有两项。然而,预期的结果是不正确的:它只有一项是您在测试设置期间添加到它的

  3. # 3 楼答案

    如果我跟随你,JUnit输出它期望两个条目并找到一个。所以,testLibrary.getRecordings()有两个条目,testList有一个条目

    这不是预期的吗testLibrary有一个来自构造函数的条目,还有一个添加到测试代码中testList有一个条目,就是添加到测试代码中的条目