好的,这就是发生的事情。我正在尝试为我设置的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);
}
我的问题是,当我运行实际测试时,默认情况下,我很确定,没有被调用。它返回一条失败的错误消息,告诉我它期望找到两个条目,但只找到一个。我试图删除测试代码正在创建的新条目,并且错误读取应该是一个,但什么也没找到。
这让我相信在实际代码中设置构造函数的方式有问题,但我不能为我的生活弄清楚我搞砸了什么。当我去寻求帮助的时候,和我交谈过的那个人就像是我一样,我不确定是什么问题,但是你可能搞砸了这个断言。但我不知道出了什么问题?
任何人都有任何意见?我真的很感激。谢谢!
答案 0 :(得分:2)
由于assertEquals
签名为(expected, actual)
,因此您的错误消息会被反转。它应该是“期待一个,得到两个”。
您的实际列表是正确的,它有两个项目,按照代码的指示。但是,预期的不正确:它只有一个项目,您在测试设置期间添加了它。
答案 1 :(得分:2)
如果我关注你,JUnit输出它预期两个条目并找到一个。因此,testLibrary.getRecordings()
有两个条目,testList
有一个。
这不是预期的吗? testLibrary
有一个来自构造函数的条目,还有一个在测试代码中添加的条目。 testList
有一个条目,即您在测试代码中添加的条目。
答案 2 :(得分:1)
assertEquals
首先期望“预期”参数,然后将“测试”参数放在第二位。这可能只是一个香草测试失败,除非你混淆了论点。