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