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

Java 数组列表:构造函数中的默认项?,java,arrays,Java,Arrays,好吧,事情是这样的。我正在尝试为我设置的库类设置测试代码。现在,我应该调整我的构造函数,以便在添加新的条目之前在数组列表中自动创建条目。这是我的构造函数: public DvrLibrary() { recordings = new ArrayList < DvrRecording > (); DvrRecording initialRecording = new DvrRecording(); initialRecording.setTitle("Fami

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

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);
}
publicdvrlibrary()
{
录制=新阵列列表();
DVR录制初始录制=新建DVR录制();
initialRecording.setTitle(“家庭成员”);
初始记录。设置开始时间(“10:00pm”);
对于(inti=0;i<3;++i){initialRecording.increaseTime();}
记录。添加(初始记录);
}
当我创建测试用例时,我的测试代码如下:

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);
}
公共记录()
{
DvrLibrary testLibrary=新的DvrLibrary();
ArrayListtestList=新的ArrayList();
DVR录制测试录制=新的DVR录制();
testRecording.setTitle(“丢失”);
testRecording.setStartTime(“以后”);
对于(inti=0;i<3;++i){testRecording.increaseTime();}
addRecording(testRecording);
添加(testRecording);
assertEquals(testLibrary.getRecordings(),testList);
}
我的问题是,当我运行实际的测试时,我很确定,默认值没有被调用。它返回了一条失败的错误消息,告诉我它希望找到两个条目,但只找到一个。我试图删除测试代码正在创建的新条目,错误显示应该有一个条目,但什么也没有找到

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


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

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

由于
assertEquals
签名是
(预期的,实际的)
,因此错误消息是反向的。应该是“期待一个,得到两个”


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

如果我跟随您,JUnit输出它预期两个条目,但找到一个条目。因此,
testLibrary.getRecordings()
有两个条目,
testList
有一个条目


这不是预期的吗
testLibrary
有一个来自构造函数的条目,一个添加到测试代码中<代码>测试列表有一个条目,就是您在测试代码中添加的条目。

发布您收到的确切错误消息。我有点困惑。如果您在testLibrary中添加“family guy”,并在testList中添加“lost”,那么为什么您希望这两个列表是相同的呢?假设junit…testng的assert方法先测试,然后再测试。嗯……没错。你在假设junit。testng的做法正好相反:对。我懂了。我没听说过testng,我以为你在“测试”一词上打错了。我很抱歉。不用担心。我意识到每个人都假设他/她在使用junit,所以我可能是这里的怪人。