> -----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(ReflectionUt > 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.