mock method compatible and java junit mockito powermock

java - method - problemas al usar @RunWith Annotation y powerMock



powermock maven (3)

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:/test-servlet.xml") public class ControlCenterManagerImplTest { @Rule public PowerMockRule rule = new PowerMockRule(); //Powermock agent initialization not required and using maven dependency specified below we can execute Power mock using spring.} <!-- Required for PowerMock --> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>1.5</version> <scope>test</scope> </dependency> <!-- Required for PowerMockRule --> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4-rule-agent</artifactId> <version>1.5</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency>

Inicialmente estaba usando solo Mockito en junits, así que estaba usando SpringJUnit4ClassRunner.class en @RunWith anotación, es decir,

@RunWith(SpringJUnit4ClassRunner.class)

debido a que la inyección de dependencia de la primavera estaba funcionando bien y estaba recibiendo un frijol a través de

@Autowired Someservice someservice ;

Pero ahora, también he integrado PowerMock en él.

Entonces, según el documento , he reemplazado la clase mencionada en la anotación @RunWith con

@RunWith(PowerMockRunner.class)

pero ahora, un servicio parcial está saliendo a ser nulo. ¿Hay alguna manera de utilizar SpringJUnit4ClassRunner.class y PowerMockRunner.class en @RunWith anotación


Sé que este hilo es viejo, pero es bueno agregar que desde 2014 y esta solicitud de extracción , puede usar la anotación @PowerMockRunnerDelegate para "delegar" el contexto de ejecución a SpringJUnit4ClassRunner (o cualquier otro corredor realmente).

El código anterior se vería así:

@RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class) @PrepareForTest(X.class); public class MyTest { // Tests goes here ... }

Con esta anotación, ya no necesita la regla de PowerMock.


Tienes que usar el PowerMockRule .

@RunWith(SpringJUnit4ClassRunner.class) @PrepareForTest(X.class) public class MyTest { @Rule public PowerMockRule rule = new PowerMockRule(); // Tests goes here ... }

Para obtener un ejemplo completo de la Prueba de integración de primavera con PowerMock y Mockito, puede consultar este proyecto de maven .

svn co http://powermock.googlecode.com/svn/tags/powermock-1.4.12/examples/spring-mockito/ cd spring-mockito/

Mira las dependencias de powermock.

less pom.xml

y luego ejecuta la prueba

mvn test

y debe obtener los siguientes resultados de prueba:

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0