skyscreamer / JSONassert

Write JSON unit tests in less code. Great for testing REST interfaces.
http://jsonassert.skyscreamer.org
Apache License 2.0
992 stars 197 forks source link

NullPointerException at JSONCompareResult.describe #171

Closed leonidng closed 2 months ago

leonidng commented 1 year ago

If expected or actual value in DefaultComparator.compareValues(...) is null then a NullPointerException will be thrown by formatting of message.

org.skyscreamer:jsonassert:1.5.1

java.lang.NullPointerException: Cannot invoke "Object.toString()" because "value" is null

at org.skyscreamer.jsonassert.JSONCompareResult.describe(JSONCompareResult.java:248)
at org.skyscreamer.jsonassert.JSONCompareResult.formatFailureMessage(JSONCompareResult.java:200)
at org.skyscreamer.jsonassert.JSONCompareResult.fail(JSONCompareResult.java:180)
at org.skyscreamer.jsonassert.comparator.DefaultComparator.compareValues(DefaultComparator.java:57)
at org.skyscreamer.jsonassert.comparator.CustomComparator.compareValues(CustomComparator.java:48)

Proposal: Replace lines (in DefaultComparator.compareValues(...))

        if ((expectedValue == null && actualValue != null) || (expectedValue != null && actualValue == null)) {
            result.fail(prefix, expectedValue, actualValue);
        }

to

        if (expectedValue == null && actualValue != null) {
            result.unexpected(prefix, actualValue);
        }
        if (expectedValue != null && actualValue == null) {
            result.missing(prefix, expectedValue);
        }