数组列表:构造函数中的默认条目?

时间:2012-03-01 21:25:30

标签: java arrays

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

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 个答案:

答案 0 :(得分:2)

由于assertEquals签名为(expected, actual),因此您的错误消息会被反转。它应该是“期待一个,得到两个”。

您的实际列表是正确的,它有两个项目,按照代码的指示。但是,预期的不正确:它只有一个项目,您在测试设置期间添加了它。

答案 1 :(得分:2)

如果我关注你,JUnit输出它预期两个条目并找到一个。因此,testLibrary.getRecordings()有两个条目,testList有一个。

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

答案 2 :(得分:1)

assertEquals首先期望“预期”参数,然后将“测试”参数放在第二位。这可能只是一个香草测试失败,除非你混淆了论点。