Olá, pessoal! Nesse artigo veremos como rodar nossos unit tests com o Spring framework, ou seja, aproveitar tudo de bom que tem o Spring e fazer nossos unit test funcionarem normalmente. É bastante simples.
let’s go…
Começando
Bem, não vou entrar nos detalhes do que é unit test, Spring, JUnit etc. Vamos direto ao ponto de maneira prática.
Primeiro Crie um Java Project, o meu será SpringExampleUnitTest.
Nota: claro que você precisa ter baixado o Spring framework core versão 3.x.
Nota: adicione o arquivo commons-logging-1.1.1.jar caso não tenha só baixar esse arquivo, basta digitar o nome no Google .
Desenvolvendo
Como bom baiano, e pensando no carnaval de salvador, vamos de chicletão. Temos uma interface que tem um método e uma classe que vai implementar:
package br.com.camilolopes;
public interface Competidor {
public void apresentar();
}
public class Chicletao implements Competidor {
private Chicleteiro chicleteiroMusica;
@Override
public void apresentar() {
chicleteiroMusica.cantar();
}
public void setChicleteiroMusica(Chicleteiro chicleteiroMusica) {
this.chicleteiroMusica = chicleteiroMusica;
}
}
public interface Musica {
void cantar();
}
public class Chicleteiro implements Musica {
@Override
public void cantar() {
System.out.println(“chicleteiro eu, chicleteira ela”);
}
}
E no package conf, criamos um xml com as configurações do Spring:
<beans xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd”>
<!– classe normal –>
<bean id=”chicleteiro” />
<!– classe que implementa a interface –>
<bean id=”bell”>
<property name=”chicleteiroMusica” ref=”chicleteiro”/>
</bean>
</beans>
Pronto. Agora vamos criar a classe de teste.Porém, vamos entender o que acontece com a nossa aplicação. Quando o método apresentar() é invocado, a classe vai se apresentar com a musica que deseja, no caso da classe Chicleteiro, vai cantar: “chicleteiro eu, chicleteira ela”.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={“classpath:conf/idolos.xml”})
public class ChicletaoTest {
@Autowired
private Chicleteiro chicleteiro;
@Test
public void testCantar() {
Chicletao chicletao = new Chicletao();
chicletao.setChicleteiroMusica(chicleteiro);
try{
chicletao.apresentar();
}catch (NullPointerException e) {
Assert.fail(“not expected result”);
}
}
Com Spring precisamos usar anotação @RunWith e informar qual framework vamos usar; no nosso caso usamos o JUNIT.
Em seguida, com anotações @ContextConfiguration estamos dizendo qual o xml que tem as configurações do Spring que usaremos para os testes, que é o mesmo da aplicação.
Depois fizemos um teste que apenas chama o método apresentar, e esperamos que nunca tenhamos um NullPointerException, mas para isso acontecer é apenas se a instância que chama o método for null, ou seja, não for instanciada. E com esse teste estamos validando duas coisas, uma que o Spring realmente está instanciando o atributo e que o resultado é o que esperamos. Veja:
E assim temos nosso unit test integrado com o Spring. Simples, não?
GitHub
Acesse o repositório no github com todos os projetos da série Spring: https://github.com/camilolopes/workspacespring
Vou ficando por aqui!!





