Junit/PowerMockito: java.lang.NoClassDefFoundError: javassist.CannotCompileException

Получение ниже исключения при запуске теста junit:

java.lang.NoClassDefFoundError: javassist.CannotCompileException
    at java.lang.J9VMInternals.verifyImpl(Native Method)
    at java.lang.J9VMInternals.verify(J9VMInternals.java:85)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:162)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createDefaultExtraMockTransformers(AbstractTestSuiteChunkerImpl.java:257)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.chunkClass(AbstractTestSuiteChunkerImpl.java:169)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>(AbstractTestSuiteChunkerImpl.java:96)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>(AbstractTestSuiteChunkerImpl.java:89)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:49)
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
    at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:56)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:527)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
    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.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: javassist.CannotCompileException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:665)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:644)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:627)
    ... 28 more

У меня есть ниже двух классов:

public class Employee {

   public static int count() {
     throw new UnsupportedOperationException();
   }

}

public class EmployeeService {

   public int getEmployeeCount() {
     return Employee.count();
   }

}

Я написал ниже тестовый класс для проверки EmployeeService :

@RunWith(PowerMockRunner.class)
@PrepareForTest(Employee.class)
public class EmployeeServiceTest {

  @Test
  public void testGetEmployeeCount() {

    PowerMockito.mockStatic(Employee.class);
    PowerMockito.when(Employee.count()).thenReturn(900);

    EmployeeService employeeService = new  EmployeeService();

    Assert.assertEquals(900,employeeService.getEmployeeCount());
  }

}

Зависимости, используемые для mockito и power mockito, следующие:

  • mockito-все-1.10.19.jar
  • powermock-mockito-1.6.2-full.jar
  • objenesis-2.1.jar
  • cglib-узел-2.2.2.jar

Чтобы устранить исключение, я также добавил javassist-3.12.0.GA-sources.jar в путь к классам, но это не помогло.

Но получаю исключение, как показано выше. Пожалуйста, помогите мне.


person Rehan    schedule 20.02.2016    source источник


Ответы (1)


javassist-3.12.0.GA-sources.jar содержит исходники (текстовые файлы Java), а не скомпилированные файлы классов Java. Используйте jar tf javassist-3.12.0.GA-sources.jar для исследования и убедитесь, что вы включили банку, содержащую .class файлов.

person Jeff Bowman    schedule 20.02.2016
comment
Пожалуйста! Если вы хотите принять ответ, указывающий, что ваш вопрос решен, нажмите на галочку слева от ответа, который вы хотите принять. Нажмите здесь, чтобы узнать больше. - person Jeff Bowman; 22.02.2016