Estoy tratando de escribir una prueba JUnit para un proyecto de Spring Roo. Si mi prueba requiere el uso de las clases de entidad, tengo la siguiente excepción:¿Cómo usar las pruebas JUnit con Spring Roo? (Problemas con EntityManager)
java.lang.IllegalStateException: Entity manager has not been injected
(is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)
El JAR Aspectos de la primavera parece estar configurado correctamente. En particular, tengo el siguiente en el archivo pom.xml
:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
y
<plugin>
<configuration>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
y las clases que utilizan las clases de entidad funcionar bien, cuando no se llama a partir de una prueba unitaria. ¿Alguna idea de cómo puedo configurar las cosas para que el administrador de la entidad se inyecte desde una prueba JUnit?
Aquí es mi clase de prueba (más o menos):
public class ServiceExampleTest {
@Test
public void testFoo() {
FooService fs = new FooServiceImpl();
Set<Foo> foos = fs.getFoos();
}
}
Esto es suficiente para iniciar la excepción. La clase FooServiceImpl devuelve un conjunto de Foo, donde Foo es una clase de entidad. El método getFoos()
funciona cuando la aplicación se ejecuta de la forma habitual. El problema solo viene en el contexto de pruebas unitarias.
Podría publicar su clase de prueba así? Nunca utilicé Spring Roo, pero con las pruebas normales de Spring normalmente tendrías que extender AbstractSpringJUnit4Test (o algo así) o utilizar un Spring Runner personalizado mediante anotaciones para las pruebas. – ponzao