Pergunta

Estou tentando aprender a usar o ApplicationContext. Meu objetivo é trocar um repositório de dados simulado por um real ao usar meus testes de unidade. Não quero fazer isso explicitamente, quero fazer isso com injeção de dependência.

Portanto, como um teste simples antes de complicar as coisas, estou simplesmente tentando tirar um feijão do meu ApplicationContext.xml. Pelo que li, isso deve funcionar:

@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {

     @Resource
     CompanyResult resultBean;

     @Test
     public void shouldAddResults() {
         assertEquals(resultBean.getCompanyName(), "Microsoft");

Mas meu resultado é sempre nulo. Aqui está o meu ApplicationContext.xml, localizado em WebContent/Web-Inf:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <bean id="resultBean" name="resultBean" class="com.trgr.cobalt.company.domain.CompanyResult">
        <property name="companyName">
            <value>Microsoft</value>
        </property>
     </bean>
</beans>

Então, por que meu resultado é sempre nulo? O que eu fiz incorretamente?

Foi útil?

Solução

Você está perdendo um @RunWith(SpringJUnit4ClassRunner.class) anotação:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {

     @Resource
     CompanyResult resultBean;

     @Test
     public void shouldAddResults() {
         assertEquals(resultBean.getCompanyName(), "Microsoft");
     }
}

POR FALAR NISSO, em sua amostra, WebContent/WEB-INF não é o local adequado para applicationContext.xml.

Se você especificar @ContextConfiguration(locations = "/applicationContext.xml") Então a primavera procurará applicationContext.xml na raiz do caminho de classe, não em WebContent/WEB-INF (Junit não tem conhecimento do fato de que este é um aplicativo da web).

Para maiores informações, Vejo Documentação de referência da primavera.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top