You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Daniel Barclay (Drill/MapR) (JIRA)" <ji...@apache.org> on 2015/01/31 03:02:36 UTC
[jira] [Created] (DRILL-2130) multiple versions of JUnit/Hamcrest
cause test failures to fail with NoSuchMethodError
Daniel Barclay (Drill/MapR) created DRILL-2130:
--------------------------------------------------
Summary: multiple versions of JUnit/Hamcrest cause test failures to fail with NoSuchMethodError
Key: DRILL-2130
URL: https://issues.apache.org/jira/browse/DRILL-2130
Project: Apache Drill
Issue Type: Bug
Components: Tools, Build & Test
Reporter: Daniel Barclay (Drill/MapR)
Assignee: Jacques Nadeau
Apparently we have included multiple versions of JUnit and/or Hamcrest, and the new versions are not first on the class path.
This means that when an assertThat call tries to report that an actual value mismatches an expected value, it dies with a NoSuchMethod error.
That in turn means that what would have been an informative test-failure message turns into a confusing crash.
It seems that something like this is happening: The unit test is calling the new version of some JUnit or Hamcrest class. That class is calling a method in another class (in Hamcrest), but the old version of the class gets loaded, so the call fails with NoSuchMethodError.
Here's a sample stacktrace:
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
at org.apache.drill.jdbc.test.DatabaseMetaDataTest.test_getColumns_resultSetMetadataIsCorrect(DatabaseMetaDataTest.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)