spring - pelicula - mr. bean(serie de televisión animada)
No hay ningún bean de calificación para un bean en la Acción que estoy probando (1)
BeanCreationException
se lanza porque no hay bean ExampleService
en su contexto de prueba. Puede suceder porque el contexto correcto no está cargado para la prueba de su acción.
Como está utilizando JUnit 4, en lugar de StrutsSpringTestCase
, debe ampliar la clase StrutsSpringJUnit4TestCase
, que se reproducirá mejor con @RunWith(SpringJUnit4ClassRunner.class)
y la carga de contexto.
Trabajo en un proyecto sobre eclipse, usando tomcat, maven, spring, hibernate y struts. Tenemos 2 aplicaciones: núcleo que contiene todos los beans (servicios) y web con las vistas de acciones, etc.
Hice las pruebas JUnit para los servicios y decidí intentar hacer algunas pruebas para las Acciones. Aquí hay un ejemplo de lo que estoy tratando de hacer:
Acción
@Action(value = "/modif/register")
@ResultPath("...")
public class A{
@Autowired
private ExampleService exampleService;
public String execute(){
Example = exampleService.find(...);
...
...
}
}
Prueba
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class ATest extends StrutsSpringTestCase {
@Before
public void setUp(){
try {
super.setUp();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testExecute() throws Exception{
request.setParameter(...);
//filling up the request
ActionProxy proxy = super.getActionProxy("/modif/register");
A register = (A) proxy.getAction();
String result = proxy.execute();
}
}
Config
@Configuration
@ComponentScan(basePackages = {"web","core"} )
public class Config {
//configuration
}
Cada vez que intento lanzar esta prueba, ActionProxy proxy = super.getActionProxy("/modif/register");
este error en la línea ActionProxy proxy = super.getActionProxy("/modif/register");
org.springframework.beans.factory.BeanCreationException: Error al crear bean con el nombre ''web.action.A'': Falló la inyección de dependencias con autoenlace; la excepción anidada es org.springframework.beans.factory.BeanCreationException: no se pudo autocablear el campo: public core.service.ExampleService web.action.A.exampleService; la excepción anidada es org.springframework.beans.factory.NoSuchBeanDefinitionException: no se ha encontrado ningún bean calificador de tipo [core.service.ExampleService] para la dependencia: se esperaba al menos 1 bean que califique como candidato de autowire para esta dependencia. Anotaciones de dependencia: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}
Tengo este error, no importa qué bean llame. Todos funcionan en la aplicación principal y en mi Acción, incluso puedo llamarlos directamente en mi prueba sin ningún error, pero falla cada vez que intento iniciar una prueba.
¿Alguien sabe qué podría arrojar esta excepción?