he integrado PowerMock y PowerRule en Junit con MockitoConseguir javassist que no se encuentra con PowerMock y PowerRule en Junit con Mockito
siguientes son las dependencias:
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.powermoc</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-objenesis</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
// My test class is:
public class TestClass extends AbstractShiroTest{
@Rule
public PowerMockRule rule = new PowerMockRule();
@Autowired
SomeService someService;
@Before
public void setUp(){
Map<String, Object> newMap = new HashMap<String, Object>();
newMap.put("userTimeZone", "Asia/Calcutta");
Subject subjectUnderTest = mock(Subject.class);
when(subjectUnderTest.getPrincipal()).thenReturn(LMPTestConstants.USER_NAME);
Session session = mock(Session.class);
when(session.getAttribute(LMPCoreConstants.USER_DETAILS_MAP)).thenReturn(newMap);
when(subjectUnderTest.getSession(false)).thenReturn(session);
setSubject(subjectUnderTest);
PowerMockito.mockStatic(CasSessionUtil.class);
when(CasSessionUtil.getCarrierId()).thenReturn(1L);
}
@Test
public void myTestMethod() {
someService.doSomething();
}
}
donde doSomething está llamando a un método estático que Necesito burlarme. ahora, cuando estoy corriendo mi caso de prueba que estoy recibiendo javassist.NotFoundException: $ Proxy88
completo seguimiento de la pila:
java.lang.RuntimeException: javassist.NotFoundException: $ Proxy88 en org.powermock .core.classloader.MockClassLoader.loadUnmockedClass (MockClassLoader.java:187) en org.powermock.core.classloader.MockClassLoader.loadModifiedClass (MockClassLoader.java:147) en org.powermock.core.classloader.DeferSupportingClassLoader.loadClass (DeferSupportingClassLoader .java: 67) en java.lang.ClassLoader.loadClass (ClassL oader.java:252) en java.lang.ClassLoader.loadClassInternal (ClassLoader.java:320) en java.lang.Class.forName0 (método nativo) en java.lang.Class.forName (Class.java:247) en org.powermock.api.support.ClassLoaderUtil.loadClass (ClassLoaderUtil.java:66) en org.powermock.api.support.ClassLoaderUtil.loadClass (ClassLoaderUtil.java:26) en org.powermock.classloading.DeepCloner .cloneFields (DeepCloner.java:243) en org.powermock.classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.cloneFields (DeepCloner.java:248) en org.powermock .classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.clon eFields (DeepCloner.java:248) en org.powermock.classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.cloneFields (DeepCloner.java:248) en org.powermock. classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.cloneFields (DeepCloner.java:248) en org.powermock.classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.cloneFields (DeepCloner.java:248) en org.powermock.classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.cloneFields (DeepCloner.java: 248) en org.powermock.classloading.DeepCloner.performClone (DeepCloner.java:128) en org.powermock.classloading.DeepCloner.clone (DeepCloner.java:82) en org.powermock.classloading.DeepCloner.clone (DeepCloner.java:69) en org.powermock.classloading.ClassloaderExecutor.execute (ClassloaderExecutor. java: 89) en org.powermock.classloading.ClassloaderExecutor.execute (ClassloaderExecutor.java:78) en org.powermock.modules.junit4.rule.PowerMockStatement.evaluate (PowerMockRule.java:49) en org.springframework. test.context.junit4.statements.SpringRepeat.evaluate (SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild (SpringJUnit4ClassRunner.java:231) en org.junit.runners.BlockJUnit4ClassRunner. runChild (BlockJUnit4ClassRunner.java:50) en org.junit.runn ers.ParentRunner $ 3.run (ParentRunner.java:193) en org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) en org.junit.runners.ParentRunner.runChildren (ParentRunner.java:191) en org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) en org.junit.runners.ParentRunner $ 2.evaluar (ParentRunner.java:184) en org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate (RunBeforeTestClassCallbacks. java: 61) en org.junit.internal.runners.statements.RunAfters.evaluate (RunAfters.java:31) en org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate (RunAfterTestClassCallbacks.java:71) en org.junit.runners.ParentRunner.run (ParentRunner.java:236) en org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:174) en org.eclipse.jdt.internal. junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java:50) en org.eclipse.jdt.internal. junit.runner.TestExecution.run (TestExecution.java:38) en org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:467) en org.eclipse.jdt.internal.junit. runner.RemoteTestRunner.runTests (RemoteTestRunner.java:683) en org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:390) en org.eclipse.jdt.internal.junit.runner. RemoteTestRunner.main (RemoteTestRunner.java:197) Causado por: javassist.NotFoundException: $ Proxy88 en javassist.ClassPool.get (ClassPool.java:436) en org.powermock.core.classloader.MockClassLoader.loadUnmockedClass (MockClassLoader. java: 180) ... 46 más
Si cambio la dependecy a
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-xstream</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
cuando me siento un differnt excepción. Consulte - https://stackoverflow.com/questions/12176049/suggest-work-around-for-com-thoughtworks-xstream-converters-conversionexception
Incluso he intentado con la versión javassist 15 pero conseguir mismo problema
Por favor, ayuda ..
Tuve el mismo problema, agregando que las dependencias anteriores resolvieron el problema. Pero me estoy enfrentando a otro problema, es decir, el código no está llegando al punto de ruptura de depuración. – aamir
gracias hombre que realmente me ayudó mucho :) –
No te olvides de votar :) – Bhuvan