Bug 538956: [JUnit 5] Incorrect JUnit 5 test results without JUnit 4 on
the classpath
Change-Id: I2401e7861756e3b3497fc3679348e35722e75782
diff --git a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java
index 1254ade..b6c9b61 100644
--- a/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java
+++ b/org.eclipse.jdt.junit5.runtime/src/org/eclipse/jdt/internal/junit5/runner/JUnit5TestListener.java
@@ -110,7 +110,9 @@
return null;
}
return new FailedComparison(expected.getStringRepresentation(), actual.getStringRepresentation());
- } else if (exception instanceof MultipleFailuresError) {
+ }
+
+ if (exception instanceof MultipleFailuresError) {
String expectedStr= ""; //$NON-NLS-1$
String actualStr= ""; //$NON-NLS-1$
String delimiter= "\n\n"; //$NON-NLS-1$
@@ -130,13 +132,21 @@
}
}
return new FailedComparison(expectedStr, actualStr);
- } else if (exception instanceof junit.framework.ComparisonFailure) {
- junit.framework.ComparisonFailure comparisonFailure= (junit.framework.ComparisonFailure) exception;
- return new FailedComparison(comparisonFailure.getExpected(), comparisonFailure.getActual());
- } else if (exception instanceof org.junit.ComparisonFailure) {
- org.junit.ComparisonFailure comparisonFailure= (org.junit.ComparisonFailure) exception;
- return new FailedComparison(comparisonFailure.getExpected(), comparisonFailure.getActual());
}
+
+ // Avoid reference to ComparisonFailure initially to avoid NoClassDefFoundError for ComparisonFailure when junit.jar is not on the build path
+ String classname= exception.getClass().getName();
+ if (classname.equals("junit.framework.ComparisonFailure") || classname.equals("org.junit.ComparisonFailure")) { //$NON-NLS-1$ //$NON-NLS-2$
+ if (exception instanceof junit.framework.ComparisonFailure) {
+ junit.framework.ComparisonFailure comparisonFailure= (junit.framework.ComparisonFailure) exception;
+ return new FailedComparison(comparisonFailure.getExpected(), comparisonFailure.getActual());
+ }
+ if (exception instanceof org.junit.ComparisonFailure) {
+ org.junit.ComparisonFailure comparisonFailure= (org.junit.ComparisonFailure) exception;
+ return new FailedComparison(comparisonFailure.getExpected(), comparisonFailure.getActual());
+ }
+ }
+
return null;
}