diff --git a/src/main/java/de/danielbechler/diff/Instances.java b/src/main/java/de/danielbechler/diff/Instances.java index eb09f21d..a9423fcd 100644 --- a/src/main/java/de/danielbechler/diff/Instances.java +++ b/src/main/java/de/danielbechler/diff/Instances.java @@ -175,6 +175,12 @@ public boolean areEqual() public boolean areMethodResultsEqual(String method) { try { + if(base == null && working == null){ + return true; + } + if(base == null && working != null || base != null && working == null){ + return false; + } Object baseMethodResult = base.getClass().getMethod(method).invoke(base); Object workingMethodResult = working.getClass().getMethod(method).invoke(working); if(baseMethodResult == null){ diff --git a/src/test/java/de/danielbechler/diff/InstancesTest.java b/src/test/java/de/danielbechler/diff/InstancesTest.java index c1fcb749..eaad31e0 100644 --- a/src/test/java/de/danielbechler/diff/InstancesTest.java +++ b/src/test/java/de/danielbechler/diff/InstancesTest.java @@ -148,6 +148,19 @@ public void testMethodResultEqualIsEqual() throws Exception assertThat(instances.areMethodResultsEqual("getValue")).isTrue(); } + @Test + public void testMethodResultEqualOneNull() throws Exception + { + final Method readMethod = getClass().getDeclaredMethod("getTestValue"); + final PropertyAccessor accessor = new PropertyAccessor("testValue", readMethod, null); + + ObjectWithString working = new ObjectWithString("string"); + ObjectWithString base = null; + + final Instances instances = new Instances(accessor, working, base, null); + assertThat(instances.areMethodResultsEqual("getValue")).isFalse(); + } + @Test public void testMethodResultEqualInvalidMethod() throws Exception {