2014-12-03 95 views
-1

我有一個標準測試類和一個主要方法以及一個JUnit類,我正在使用它來編寫聯繫人時進行測試目錄通過測試驅動開發。我需要使用assertEquals & assertTrue等方法。正如我之前從未使用過的那樣,我在標準測試類中編寫了一個簡單測試,並在預期時返回True,並在預期時拋出異常。Java - assertEquals&assertTrue - 在JUnit中通過異常[null]測試失敗,但通過測試類

然後我搬進了我的JUnit測試類,寫在標準測試類通過了相同的測試和運行JUnit測試類。測試失敗,出現以下錯誤:

Test[Method Name] failed with exception [null] 

我用確切的代碼是沿着這些線路:

assertEquals("NameImExpectingToFind",obj.searchMethod("nameImSearchingFor").get(0).getName()); 

我一直停留在這個問題上幾個小時。只是沒有意義,它會通過一個標準的測試類,但不是在JUnit測試類中。

在此先感謝您的幫助!

Test class: 
    AddressBook main = new AddressBook(); 
    Entry Will = new Entry("Will", "Blah", 
      "Blah, blah, blah", "TF4 3HS", "077774451", 
      "01/02/93"); 
    Entry Ben = new Entry("Ben", "Blah", 
      "Blah, blah, blah", "TF4 3HS", "077774451", 
      "01/02/93"); 
    main.addEntry(Will); 
    main.addEntry(Ben); 
    //assertEquals("Ben",main.cSearchFirst("Ben").get(0).getfName()); 
    System.out.println("Ben" == main.cSearchFirst("Ben").get(0).getfName()); 

返回True。

JUnit Test class: 
    AddressBook main = new AddressBook(); 
    Entry Will = new Entry("Will", "Blah", 
      "Blah, blah, blah", "TF4 3HS", "077774451", 
      "01/02/93"); 
    Entry Ben = new Entry("Ben", "Blah", 
      "Blah, blah, blah", "TF4 3HS", "077774451", 
      "01/02/93"); 
    main.addEntry(Will); 
    main.addEntry(Ben); 
    assertEquals("Ben",main.cSearchFirst("Ben").get(0).getfName()); 
    //System.out.println("Ben" == main.cSearchFirst("Ben").get(0).getfName()); 

返回測試[方法名稱]失敗,異常[null]。

+1

您需要向我們展示更多代碼(兩個類中的整個測試方法)。 – 2014-12-03 18:30:25

+0

只需添加一些。希望有所幫助。 – user2962713 2014-12-03 18:41:22

+0

將main.cSearchFirst(「Ben」)。get(0).getfName()分解爲單獨的中間變量,以查看哪些級別爲null,如果您不知道如何將其作爲單個表達式進行調試。這裏沒有特定的JUnit。 – kryger 2014-12-03 21:37:45

回答

0

看起來你有一個空指針,之前的結果如何

List<Entry> entries = main.cSearchFirst("Ben");//check for null here, and size 
Entry e = entries.get(0); //again check null here, examine properties in debugger 
String s = e.getfName(); 

巴掌調試器在那裏,並通過看空被拋出哪裏走。

編輯:我還建議你做一個檢查周圍的空值,如果你期望爲空,否則嘗試/捕獲空例外,並通過測試失敗。

+0

我只是增加了一些代碼,如果這有助於幫助您的懷疑? – user2962713 2014-12-03 18:40:05

+0

這是一個意外。已更新以反映真實的代碼。感謝迄今爲止的幫助。任何更多將不勝感激! – user2962713 2014-12-03 18:43:37

+0

Ben「.equals(testStuff)也在測試類中返回True。 – user2962713 2014-12-03 18:47:20