Pessoal, estou com um problema quando tento testar meu dao através do jUnit, com spring 3 e jUnit 4.8, a seguinte exception é mostrada:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.cnseg.rnpa.dao.tests.TestUsuarioDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void br.com.cnseg.rnpa.dao.tests.TestUsuarioDao.setUsuarioDao(br.com.cnseg.rnpa.dao.UsuarioDao); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.cnseg.rnpa.dao.UsuarioDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void br.com.cnseg.rnpa.dao.tests.TestUsuarioDao.setUsuarioDao(br.com.cnseg.rnpa.dao.UsuarioDao); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.cnseg.rnpa.dao.UsuarioDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.cnseg.rnpa.dao.UsuarioDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
A anotação @autowired que está gerando esse erro, meu dao test:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( locations = {"classpath:**/applicationContext.xml"} )
public class TestUsuarioDao {
private UsuarioDao usuarioDao;
private Integer id = 1;
@Autowired
public void setUsuarioDao( UsuarioDao usuarioDao ) {
this.usuarioDao = usuarioDao;
}
private Usuario getUsuario() {
Usuario usuario = new Usuario();
usuario.setDsNomeCompleto( "Teste" );
return usuario;
}
@Test
public void testSalvar() {
Usuario usuario = null;
usuario = usuarioDao.salvar( getUsuario() );
assertNotNull( usuario );
assertEquals( id, usuario.getIdUsuario() );
assertEquals( "Teste", usuario.getDsNomeCompleto() );
}
}
Meu dao:
public class UsuarioDaoImpl extends DaoGenericoImpl<Usuario, Integer> implements UsuarioDao{
@Override
public Usuario salvarUsuario( Usuario usuario )throws Exception {
try
{
System.out.println( "Salvando usuario." );
// Verifica se o usuario ainda não está salva no banco de dados.
if( usuario.getIdUsuario() == null )
{
//Salva os dados do usuario.
super.salvar( usuario );
// Finaliza a transação.
super.getEntityManager().getTransaction().commit();
System.out.println( "Usuario salvo." );
}
}
catch( Exception e )
{
e.printStackTrace();
throw new Exception( "Erro ao salvar Usuario" );
}
finally
{
super.getEntityManager().close();
}
return usuario;
}
}
Application Context:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="*" />
<bean id = "entityManagerFactory" class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name = "persistenceUnitName" value = "rnpa-dao" />
</bean>
<bean class = "org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean class = "org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<bean id = "transactionManager" class = "org.springframework.orm.jpa.JpaTransactionManager">
<property name = "entityManagerFactory" ref = "entityManagerFactory" />
</bean>
<tx:annotation-driven />
<bean id = "usuarioDao" class = "br.com.cnseg.rnpa.daoImpl.UsuarioDaoImpl"/>
</beans>
Já procurei no google e todas as soluções que encontrei não resolveram, valeu galera desde já.