Spring + jUnit injeção de dependências com problema

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á.

Olá amigo,

faça isso:

// código seu aqui...
    @Autowired  
    private UsuarioDao usuarioDao; 
 
    private Integer    id = 1;  
      

    public void setUsuarioDao( UsuarioDao usuarioDao ) {  
        this.usuarioDao = usuarioDao;  
    } 

e no seu dao vc faz isso:

@Repository
public class UsuarioDaoImpl extends DaoGenericoImpl&lt;Usuario, Integer&gt; implements UsuarioDao{  
//... mais codigo continua....

ou

@Component
public class UsuarioDaoImpl extends DaoGenericoImpl&lt;Usuario, Integer&gt; implements UsuarioDao{  
//... mais codigo continua....

e retire a declaração do bean usuariodao do xml.
espero ter ajudado
fallow

Continua gerando o mesmo erro :frowning: eu não consigo injetar a dependência do dao.

@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( locations = {"classpath:**/applicationContext.xml"} )
public class TestUsuarioDao {
	@Autowired
    private UsuarioDao usuarioDao;
    private Integer    id = 1;
    
    public void setUsuarioDao( UsuarioDao usuarioDao ) {
        this.usuarioDao = usuarioDao;
    }
//Código...
@Repository  
public class UsuarioDaoImpl extends DaoGenericoImpl<Usuario, Integer> implements UsuarioDao{
//Código...

é possível rodar o junit test mesmo sem um server application rodando?

Altere p trecho:

@ContextConfiguration( locations = {"classpath:**/applicationContext.xml"} )  
 // para este
@ContextConfiguration(locations = { "classpath*:*/applicationContext.xml" })

fallow

Mesma exception, eu fiz um teste passando um applicationcontext que não existe e gera uma exception dizendo que não foi possível achar o applicationcontext.

Se você fez a alteração para configuração por annotations como sugerido acima, altere o component-scan assim:

Mesmo erro, eu havia deixado só o * como um teste para ver se ele estava scaneando as annotations realmente no projeto.