JUnit 测试用例失败:java.lang.AssertionError:预期为空,但为:<空>

Seb*_*ino 1 java junit jackson

我正在使用 JUnit 4.12 和 Jackson

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

    assertNull(receipt.getDataAsString());
}
Run Code Online (Sandbox Code Playgroud)

我正在测试的方法如下(this.data 只是一个空映射):

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

最后我运行测试并检查“null”是否不是“<null>”。

Som*_*ken 5

getDataAsString()不返回 null 因为return new ObjectMapper().writeValueAsString(this.data);不抛出异常,而是返回一个字符串,表示"< null >"和 不等于null当然。如果writeValueAsString()返回此自定义空类型,则不应仅在捕获异常时返回 null,您也应该返回 null 。