java - unitarias - mockito test no da tal error de método cuando se ejecuta como junit test, pero cuando los frascos se agregan manualmente en las confuguraciones de ejecución, funciona bien
pruebas unitarias junit y mockito (4)
Creo que hay un problema con la versión de mockito - acabo de actualizar desde -
testCompile group: ''org.mockito'', name: ''mockito-all'', version: ''1.8.5'' to
testCompile group: ''org.mockito'', name: ''mockito-all'', version: ''1.10.19''
He estado enfrentando un problema peculiar. Básicamente, cuando ejecuto mi prueba de Mockito / PowerMockito normalmente, es decir, ''Ejecutar como prueba de Junit'', me da el siguiente error:
java.lang.NoSuchMethodError: org.mockito.mock.MockCreationSettings.isUsingConstructor()Z
at org.mockito.internal.creation.instance.InstantiatorProvider.getInstantiator(InstantiatorProvider.java:10)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:110)
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58)
at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:203)
at org.powermock.api.extension.listener.AnnotationEnabler.standardInject(AnnotationEnabler.java:106)
at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:54)
at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
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)
Intenté agregar todos los contenedores necesarios en la dependencia de Maven, así como en la ruta de compilación, pero fue en vano.
Sin embargo, luego agregué los archivos jar manualmente en las configuraciones de ejecución-> classpath-> entradas de usuario. Luego, ejecuté la prueba como lo haría normalmente y mostró la barra de estado verde, es decir, funcionó perfectamente.
Por favor ayúdame con esto. Necesito que la prueba se ejecute sin estos molestos cambios que podrían afectar mi trabajo. ¿Qué puedo hacer para que pueda ejecutar la prueba normalmente, es decir, sin ejecutar las configuraciones pero simplemente agregando los archivos jar en la ruta de compilación y luego ''ejecutar como prueba junit''?
Para mi la versión mockito estaba creando problemas. Simplemente elimine la dependencia de mockito si ha agregado explícitamente en su archivo pom. Acabo de quitar -
testCompile ''org.mockito:mockito-all:1.9.5''
línea de mi archivo de gradle. Permite que el poder se resuelva de manera simulada y agregue la dependencia de mockito que necesita por sí misma, en lugar de que usted agregue a la fuerza uno que pueda generar conflictos.
Así que para mí las dependencias son -
testCompile "org.powermock:powermock-module-junit4:1.6.4"
testCompile "org.powermock:powermock-module-junit4-rule:1.6.4"
testCompile "org.powermock:powermock-api-mockito:1.6.4"
testCompile "org.powermock:powermock-classloading-xstream:1.6.4"
aparte de junit y otras dependencias de lib que pueda tener.
Prueba Cntrl + Shift + T en tu pantalla de eclipse. Comprueba cuáles son tus resultados. Lo ideal es que eclipse resuelva esta clase solo desde una dependencia. Si está obteniendo varios resultados, es posible que deba agregar la exclusión en ciertas dependencias.
También verifique si puede ejecutar sus casos de prueba desde el símbolo del sistema. Si puedes hacerlo, entonces no es un problema grave. Pero si algo falla aquí, verifique sus dependencias.
Tu IDE debe estar sincronizado con Maven, que es lo que estás haciendo manualmente al agregar las dependencias.
Desafortunadamente, Eclipse no proporciona (o no lo hizo) este comportamiento fuera de la caja (a diferencia de IntelliJ, que se sincroniza a la perfección).
La solución se solía hacer con el complemento Eclipse de Maven, pero al mirar los documentos parece que la última forma de hacerlo es con el complemento de integración de Eclipse Maven para el IDE.