Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-17129

Gradle plugin does not support HudsonTestCase

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • gradle-jpi-plugin
    • None

      It is not possible to run JUnit tests with the standard test class HudsonTestCase in a Gradle build script.

      This is the error message:

      java.lang.NoClassDefFoundError: hudson/tasks/Ant$AntInstallation
      
      	at java.lang.Class.getDeclaredMethods0(Native Method)
      
      	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
      
      	at java.lang.Class.getDeclaredMethods(Class.java:1791)
      
      	at junit.framework.TestSuite.addTestsFromTestCase(TestSuite.java:149)
      
      	at junit.framework.TestSuite.<init>(TestSuite.java:129)
      
      	at org.junit.internal.runners.JUnit38ClassRunner.<init>(JUnit38ClassRunner.java:71)
      
      	at org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:14)
      
      	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
      
      	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
      
      	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
      
      	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
      
      	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:52)
      
      	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:42)
      
      	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:71)
      
      	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      
      	at java.lang.reflect.Method.invoke(Method.java:597)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
      
      	at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
      
      	at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
      
      	at $Proxy2.processTestClass(Unknown Source)
      
      	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      
      	at java.lang.reflect.Method.invoke(Method.java:597)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
      
      	at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
      
      	at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
      
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      
      	at java.lang.Thread.run(Thread.java:662)
      
      Caused by: java.lang.ClassNotFoundException: hudson.tasks.Ant$AntInstallation
      
      	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
      
      	at java.security.AccessController.doPrivileged(Native Method)
      
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
      
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
      
      	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
      
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
      
      	... 36 more
      
      

      If I manually add the dependency
      jenkinsPlugins([group: 'org.jenkins-ci.plugins', name: 'ant', version: '1.1', ext: 'jar'])
      then I get this:

      org.jvnet.hudson.reactor.ReactorException: java.lang.Error: java.lang.reflect.InvocationTargetException
      
      	at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:246)
      
      	at jenkins.InitReactorRunner.run(InitReactorRunner.java:43)
      
      	at jenkins.model.Jenkins.executeReactor(Jenkins.java:894)
      
      	at jenkins.model.Jenkins.<init>(Jenkins.java:796)
      
      	at hudson.model.Hudson.<init>(Hudson.java:81)
      
      	at org.jvnet.hudson.test.HudsonTestCase.newHudson(HudsonTestCase.java:478)
      
      	at org.jvnet.hudson.test.HudsonTestCase.setUp(HudsonTestCase.java:315)
      
      	at junit.framework.TestCase.runBare(TestCase.java:132)
      
      	at org.jvnet.hudson.test.HudsonTestCase.runBare(HudsonTestCase.java:293)
      
      	at junit.framework.TestResult$1.protect(TestResult.java:110)
      
      	at junit.framework.TestResult.runProtected(TestResult.java:128)
      
      	at junit.framework.TestResult.run(TestResult.java:113)
      
      	at junit.framework.TestCase.run(TestCase.java:124)
      
      	at junit.framework.TestSuite.runTest(TestSuite.java:243)
      
      	at junit.framework.TestSuite.run(TestSuite.java:238)
      
      	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
      
      	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:55)
      
      	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:42)
      
      	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:71)
      
      	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      
      	at java.lang.reflect.Method.invoke(Method.java:597)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
      
      	at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
      
      	at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
      
      	at $Proxy2.processTestClass(Unknown Source)
      
      	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      
      	at java.lang.reflect.Method.invoke(Method.java:597)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
      
      	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
      
      	at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
      
      	at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
      
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      
      	at java.lang.Thread.run(Thread.java:662)
      
      Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException
      
      	at hudson.init.InitializerFinder.invoke(InitializerFinder.java:124)
      
      	at hudson.init.InitializerFinder$TaskImpl.run(InitializerFinder.java:184)
      
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
      
      	at jenkins.model.Jenkins$7.runTask(Jenkins.java:883)
      
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
      
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
      
      	... 3 more
      
      Caused by: java.lang.reflect.InvocationTargetException
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      
      	at java.lang.reflect.Method.invoke(Method.java:597)
      
      	at hudson.init.InitializerFinder.invoke(InitializerFinder.java:120)
      
      	... 8 more
      
      Caused by: java.lang.NullPointerException
      
      	at hudson.diagnosis.NullIdDescriptorMonitor.verifyId(NullIdDescriptorMonitor.java:86)
      
      	... 13 more
      

            daspilker Daniel Spilker
            gruberrolandfiducia Roland Gruber
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: