[
https://issues.apache.org/jira/browse/DRILL-2130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14332428#comment-14332428
]
Daniel Barclay (Drill) commented on DRILL-2130:
-----------------------------------------------
Some pages related to the problem:
https://tedvinke.wordpress.com/2013/12/17/mixing-junit-hamcrest-and-mockito-explaining-nosuchmethoderror/
http://stackoverflow.com/questions/18770943/mockito-junit-hamcrest-versioning
https://jira.codehaus.org/browse/PARANAMER-25
> old version Hamcrest on classpath before new 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)
> Assignee: Jacques Nadeau
> Priority: Minor
> Fix For: 1.0.0
>
>
> 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)