java - unitaria - No se puede ejecutar la prueba JUnit con PowerMockRunner
qué anotación indica que un método será una prueba (3)
Comprueba lo que dijo Stefan, y encima también debes agregar
@PrepareForTest({<The class/es you are Mocking>, ...})
sin la preparación para la prueba, PowerMockRunner no sabrá de qué clase se burla.
Tengo un proyecto Java basado en Gradle si ahora quiero simular un método privado usando PowerMock. El problema es que no puedo usar PowerMockRunner ya que siempre obtengo la siguiente excepción cuando agrego la @RunWith(org.powermock.modules.junit4.PowerMockRunner.class)
.
Error:
org.powermock.reflect.exceptions.FieldNotFoundException: Field ''fTestClass'' was not found in class org.junit.internal.runners.MethodValidator.
at org.powermock.reflect.internal.WhiteboxImpl.getInternalState(WhiteboxImpl.java:581)
at org.powermock.reflect.Whitebox.getInternalState(Whitebox.java:308)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate TestMethods(PowerMockJUnit4MethodValidator.java:79)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate InstanceMethods(PowerMockJUnit4MethodValidator.java:49)
at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:51)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108)
...
Estas son mis dependencias de prueba:
testCompile ''junit:junit:4.+'',
''org.powermock:powermock-core:1.5.6'',
''org.powermock:powermock-module-junit4:1.5.6'',
''org.powermock:powermock-api-mockito:1.5.6''
La prueba en sí también falla cuando está completamente vacía (error de inicialización):
@RunWith(PowerMockRunner.class)
public class SomeTest {
@Test
public void testSomething() {
}
}
¿Alguna idea de lo que podría estar mal? Otras pruebas que usan PowerMock funcionan bien (ninguna de ellas usa PowerMockRunner).
¡Saludos y gracias por cualquier ayuda! Ben
Este es un error que ocurre cuando usas JUnit 4.12 y PowerMock <1.6.1. El problema se resuelve en PowerMock 1.6.1. Por favor actualice sus dependencias en consecuencia
testCompile ''junit:junit:4.12'',
''org.powermock:powermock-core:1.6.1'',
''org.powermock:powermock-module-junit4:1.6.1'',
''org.powermock:powermock-api-mockito:1.6.1''
Si no puede actualizar PowerMock, puede usar JUnit 4.11.
testCompile ''junit:junit:4.11'',
''org.powermock:powermock-core:1.5.6'',
''org.powermock:powermock-module-junit4:1.5.6'',
''org.powermock:powermock-api-mockito:1.5.6''
Podría agregar más líneas de stacktrace, que descubren más detalles sobre el problema.
Se ha registrado un error en PowerMock: https://code.google.com/p/powermock/issues/detail?id=531
Parece que JUnit cambió algunos de sus nombres de campo internos a los que PowerMock estaba accediendo por reflexión, lo que rompió la capacidad de PowerMock de inyectarse correctamente.