Colisión de carga de clase entre Robolectric y Powermock

Estoy tratando de escribir una prueba que necesita tantoRobolectric 2.2 yPowerMock, ya que el código bajo prueba depende de algunas bibliotecas de Android y bibliotecas de terceros con clases finales que necesito burlarme.

Dado que me veo obligado a usar el corredor de prueba Robolectric a través de:

@RunWith(RobolectricTestRunner.class)

... No puedo usar el corredor de prueba PowerMock, por lo que estoy tratando de seguir la alternativa del agente Java de PowerMock, sin suerte hasta ahora.

He configurado todo de acuerdo aesta guia pero estoy enfrentando un problema de colisión entre las clases requeridas por la biblioteca javaagent y por robolectric a través de su dependencia con asm-1.4. Ambos dependen de

org.objectweb.asm.ClassVisitor

, pero javaagent-1.5.1 se entrega con su propia versión donde ClassVisitor es una interfaz, mientras que la versión asm-1.4 para el mismo espacio de nombres es una clase abstracta, con el error correspondiente en tiempo de ejecución:

java.lang.IncompatibleClassChangeError: class org.objectweb.asm.tree.ClassNode has interface org.objectweb.asm.ClassVisitor as super class

Incluso he intentado modificar el javaagent library jar para eliminar por completo las clases org.objectew.asm, pero eso no funciona, ya que ClassNotFoundException sucede después debido a algunas otras clases necesarias en el paquete org.objectweb.asm que solo se envía en la biblioteca javaagent jar, y no en el asm one.

¿Algunas ideas? Según los ejemplos, el agente parece funcionar bien con, al menos, el corredor de pruebas Spring.

Respuestas a la pregunta(1)

Su respuesta a la pregunta