Tengo una aplicación web Spring y quiero hacer pruebas unitarias para mis controladores. Decidí no usar Spring para configurar mis pruebas, sino usar los objetos simulados de Mockito junto con mis controladores.Mockito Testcase ignora las anotaciones
Creo y ejecuto pruebas con Maven2 y el plugin surefire. Esto es de mi pom.xml configuración
<!-- Test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit</groupId>
<artifactId>com.springsource.org.junit</artifactId>
<version>4.5.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.0-rc1</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
que mi compilador y plugins de éxito seguro como esto:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<compilerVersion>1.6</compilerVersion>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
</plugin>
Mi clase de prueba es el siguiente:
@RunWith(MockitoJUnitRunner.class)
public class EntityControllerTest {
private EntityController entityController;
private DataEntityType dataEntityType = new DataEntityTypeImpl("TestType");
@Mock
private HttpServletRequest httpServletRequest;
@Mock
private EntityFacade entityFacade;
@Mock
private DataEntityTypeFacade dataEntityTypeFacade;
@Before
public void setUp() {
entityController = new EntityController(dataEntityTypeFacade, entityFacade);
}
@Test
public void testGetEntityById_IllegalEntityTypeName() {
String wrong = "WROOONG!!";
when(dataEntityTypeFacade.getEntityTypeFromTypeName(wrong)).thenReturn(null);
ModelAndView mav = entityController.getEntityById(wrong, httpServletRequest);
assertEquals("Wrong view returned in case of error", ".error", mav.getViewName());
}
Anotaciones todo: -)
Pero al construir desde la línea de comandos obtengo una NullPointerException en la línea cuando (dataEntityTypeF) acade.getEntityTypeFromTypeName (wrong)). thenReturn (null); como el objeto dataEntityTypeFacade es nulo. Cuando ejecuto mi testcase en Eclipse todo está bien y mis objetos simulados son instanciados y se llama al método anotado con @Before.
¿Por qué mis anotaciones aparentemente se ignoran cuando se ejecuta desde la línea de comando ???
/Eva
Por "edificio desde la línea de comandos", lo que quiere decir un experto construir o algo más? –