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);
}
我的问题是,当我运行实际的测试时,我很确定,默认值没有被调用。它返回了一条失败的错误消息,告诉我它希望找到两个条目,但只找到一个。我试图删除测试代码正在创建的新条目,错误显示应该有一个条目,但什么也没有找到
这让我相信,我在实际代码中设置构造函数的方式有问题,但我一辈子都搞不清楚自己搞砸了什么。当我去寻求帮助时,和我交谈的那个人说,我不确定出了什么问题,但你可能把事情搞砸了。但我不知道怎么了
有人有什么意见吗?我真的很感激。谢谢
# 1 楼答案
assertEquals
首先需要“预期”参数,然后是“测试”参数。这可能只是一个普通的测试失败,除非你混淆了论点# 2 楼答案
因为
assertEquals
签名是(expected, actual)
,所以错误消息是反向的。应该是“期待一个,得到两个”您的实际列表是正确的,按照代码的指示,它有两项。然而,预期的结果是不正确的:它只有一项是您在测试设置期间添加到它的
# 3 楼答案
如果我跟随你,JUnit输出它期望两个条目并找到一个。所以,
testLibrary.getRecordings()
有两个条目,testList
有一个条目这不是预期的吗
testLibrary
有一个来自构造函数的条目,还有一个添加到测试代码中testList
有一个条目,就是添加到测试代码中的条目