2012-03-01 24 views
2

好的,这是发生了什么事。我正在尝试为我设置的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

发布确切的错误消息,您正在获取。 – kosa 2012-03-01 21:29:43

+1

我有点困惑。如果你在你的testLibrary中添加“family guy”,并且你在testList中添加了“lost”,你为什么期望这两个列表是相同的?假设junit ... – stevevls 2012-03-01 21:30:02

回答

1

assertEquals预计第一个“预期”参数,第二个“测试”参数。这可能只是一个香草测试失败,除非你混淆了论点。

+0

... testng的断言方法首先测试然后预期。 ;) – stevevls 2012-03-01 21:32:31

+0

[False](http://www.junit.org/apidocs/org/junit/Assert.html#assertEquals(java.lang.Object,%20java.lang.Object))。 – 2012-03-01 21:41:13

+0

嗯...真的。你在假设junit。 testng反其道而行:http://testng.org/javadocs/org/testng/Assert.html – stevevls 2012-03-01 21:51:34

2

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

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

2

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

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