> -----Original Message----- > From: KARR, DAVID > Sent: Wednesday, March 29, 2017 12:47 PM > To: users@camel.apache.org > Subject: RE: Issues running unit tests based on CamelTestSupport > > > -----Original Message----- > > From: KARR, DAVID > > Sent: Wednesday, March 29, 2017 12:07 PM > > To: users@camel.apache.org > > Subject: Issues running unit tests based on CamelTestSupport > > > > I have only used Camel peripherally before. I'm trying to get some > > unit tests working that are based on CamelTestSupport. When I run > > "mvn install" from the command line, the tests attempt to execute, but > > I get errors like this: > > > > ------------------- > > [ERROR] Failed to execute goal > > org.apache.maven.plugins:maven-surefire- > > plugin:2.19.1:test (default-test) on project ...: Execution > > default-test of goal > > org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test > > failed: There was an error in the forked process [ERROR] > > java.lang.NoClassDefFoundError: org/junit/rules/TestWatcher [ERROR] at > > java.lang.ClassLoader.defineClass1(Native Method) [ERROR] at > > java.lang.ClassLoader.defineClass(ClassLoader.java:763) > > [ERROR] at > > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142 > > ) [ERROR] at > > java.net.URLClassLoader.defineClass(URLClassLoader.java:467) > > [ERROR] at java.net.URLClassLoader.access$100(URLClassLoader.java:73) > > [ERROR] at java.net.URLClassLoader$1.run(URLClassLoader.java:368) > > [ERROR] at java.net.URLClassLoader$1.run(URLClassLoader.java:362) > > [ERROR] at java.security.AccessController.doPrivileged(Native Method) > > [ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:361) > > [ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > > [ERROR] at > > sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) > > [ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > > [ERROR] at java.lang.Class.getDeclaredMethods0(Native Method) [ERROR] > > at > > java.lang.Class.privateGetDeclaredMethods(Class.java:2701) > > [ERROR] at java.lang.Class.privateGetMethodRecursive(Class.java:3048) > > [ERROR] at java.lang.Class.getMethod0(Class.java:3018) > > [ERROR] at java.lang.Class.privateGetMethodRecursive(Class.java:3058) > > [ERROR] at java.lang.Class.getMethod0(Class.java:3018) > > [ERROR] at java.lang.Class.getMethod(Class.java:1784) > > [ERROR] at > > org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod(Reflection > > Ut > > ils.java:61) > > ----------------- > > > > I've verified that this class is in the junit artifact, which is set > > as a dependency in the module (test scope). Is there something funky > > about how Camel tests execute that are not obvious to me? > > After some more digging, I see that the "camel-test" artifact references > the "org.junit.rules.TestName" class, which in some older versions of > Junit (4.12 for instance) extends a "TestWatcher" class, although in > newer versions that is changed to "TestWatchman". I still can't figure > out the root cause for this.
I'm specifying the use of Junit 4.8.1 in my dependencies. In Eclipse, if I manually add the Junit 4.12 jar to the end of the classpath for my test configuration, it gets past this error. That's not really a workable solution, but it's at least some information.