2012-03-01 54 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有一個條目,即您在測試代碼中添加的條目。