如果我们使用assertEquals,是否值得在Junit测试用例中首先检查assertNotNull?

Vin*_*ati 1 java junit unit-testing

我有一个测试用例如下:

 @Test
    public void GIVEN_correct_tradingStatusId_parameter_WHEN_invoked_getTradingStatusByName_THEN_correct_TradingStatus_is_returned() {
        String tradingStatus = lookupDto.getTradingStatusByName("2013");

        assertNotNull(tradingStatus);
        assertEquals("Dissolved", tradingStatus);
    }
Run Code Online (Sandbox Code Playgroud)

在这里,我测试tradingStatus不是为null然后检查它等于Dissolved.我关心的是我是否真的需要测试assertNotNull我是否正在测试使用assertEquals.

我在源代码中查看了assertEquals的方法定义.如下: -

static public void assertEquals(String message, Object expected,
            Object actual) {
        if (equalsRegardingNull(expected, actual)) {
            return;
        } else if (expected instanceof String && actual instanceof String) {
            String cleanMessage = message == null ? "" : message;
            throw new ComparisonFailure(cleanMessage, (String) expected,
                    (String) actual);
        } else {
            failNotEquals(message, expected, actual);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在这个equalsRegardingNull就像:

private static boolean equalsRegardingNull(Object expected, Object actual) {

    if (expected == null) {
        return actual == null;
    }
    return isEquals(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

我甚至无法理解assertNotNull在打电话之前是否值得使用assertEquals.请帮忙.

saw*_*303 6

最简洁的答案是不.

没有就没有必要使用assertNotNullassertEquals.如果你tradingStatusnull比较无论如何都将失败,并会告诉你,你是对的比较null.其他所有因素都会使您的测试代码变得更加复杂,但却无法带来额外的好处.