2017-05-24 69 views
0

我使用JUnit 4.12和傑克遜JUnit測試用例失敗:java.lang.AssertionError:預計空,卻被:<null>

@Test 
public void testFailToGetDataAsString() { 
    Receipt receipt = new Receipt(null); 

    assertNull(receipt.getDataAsString()); 
} 

我測試的是以下(this.data只是一個方法空地圖):

public String getDataAsString() { 
    try { 
     return new ObjectMapper().writeValueAsString(this.data); 
    } catch (Exception e) { 
     return null; 
    } 
} 

最後運行測試,並檢查「空」不「空<>」。

回答

4

getDataAsString()沒有返回null,因爲return new ObjectMapper().writeValueAsString(this.data);不拋出一個異常,而是返回一個字符串,說"<null>"和不等於當然null。如果writeValueAsString()返回此自定義空類型,則不應僅在捕獲異常時返回null,否則應該返回null。

1

我終於改變了方法代碼:

public String getDataAsString() { 
    try { 
     if (this.data != null) { 
      return new ObjectMapper().writeValueAsString(this.data); 
     } 
    } catch (Exception e) { 
    } 
    return null; 
} 

我真的不知道爲什麼這個作品和以前的一個沒有。