Buscar

JUnit Tutorial_ Uma introdução ao JUnit e Testes Unitários no Java


Prévia do material em texto

19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 1/20
Marcar como concluído Anotar
Artigos Java JUnit Tutorial
Artigo
JUnit Tutorial
Neste artigo veremos como trabalhar com o JUnit e implementar testes unitários em Java.
Invista em você! Saiba como a DevMedia pode ajudar sua carreira.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/artigos/
https://www.devmedia.com.br/artigos/java
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 2/20
Neste artigo, abordo um assunto vital para programadores e analistas que trabalham sobre um
paradigma ágil como Extreme Programming, tentarei mostrar de forma sucinta tópicos como: Um
pouco de XP, Como programar guiado a testes? Teste Unitário (O que? Por quê? Quando? Quem?
Como?), JUnit (O que? por quê? quando? quem? como?). JUnit (Planejamento e arquitetura das
classes), JUnit (Funcionamento e Análise do resultado), Implementado testes em JUnit usando o
Eclipse e Outros métodos e técnicas complementares.
JUnit: Implementando testes unitários em Java
Um pouco de XP
XP é um apelido carinhoso de uma metodologia ágil de desenvolvimento designada Extreme
Programming, com foco em agilidade de equipes e qualidade de projetos, apoiada em valores como
simplicidade, comunicação, feedback e coragem.
XP é uma metodologia muito comportamental, onde prima mudanças de atitudes e práticas. Sua
principal mudança está na máxima integração entre pessoas e, principalmente, estimulando uma
participação maior do cliente. Portando, literalmente, temos que “FAZER O PROGRAMA COM O
CLIENTE”.
Práticas de XP
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 3/20
XP sugere um conjunto de boas práticas que melhoram o planejamento, execução, e gerenciamento
de seu projeto de so�ware.
Essas práticas (Ver na �gura 1) melhoram sua e�ciência e e�cácia, diminuindo o retrabalho,
garantindo dessa forma a qualidade do seu projeto.
 
Figura 1. Exemplo de práticas XP a nível organizacional, de equipes e de pares.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 4/20
Curso relacionado: O que é JUnit?
TDD - Test Driven Development
O conceito de Desenvolvimento Guiado por Testes de�ne que antes de criarmos um código novo
(classe), devemos escrever um teste (classe de test case) para ele. Essa prática traz vários benefícios
às equipes de desenvolvimento e inclusive estes testes serão usados como métrica em todo o tempo
de vida do projeto. Veja na �gura 2 um modelo de como funciona o processo de testes unitários
dentro de seu projeto.
Figura 2. Processo de testes unitários dentro de seu projeto.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
http://www.devmedia.com.br/curso/o-que-e-junit/2075
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 5/20
O que são Testes Unitários?
Imagine por exemplo, se um avião só fosse testado após a conclusão de sua construção, com certeza
isso seria um verdadeiro desastre, é nesse ponto que a engenharia aeronáutica é uma boa referência
em processos de construções de projetos de so�ware, principalmente em sistemas de missão crítica,
pois durante a construção e montagem de um avião todos os seus componentes são testados
isoladamente até a exaustão, e depois cada etapa de integração também é devidamente testada e
homologada.
O teste unitário, de certa forma se baseia nessa ideia, pois é uma modalidade de testes que se
concentra na veri�cação da menor unidade do projeto de so�ware. É realizado o teste de uma
unidade lógica, com uso de dados su�cientes para se testar apenas à lógica da unidade em questão.
Em sistemas construídos com uso de linguagens orientadas a objetos, essa unidade pode ser
identi�cada como um método, uma classe ou mesmo um objeto.
Porque usar Testes Unitários?
Abaixo temos alguns dos principais fatores que motivam o uso sistemático da prática de testes
unitários:
Previne contra o aparecimento de “BUGʼS” oriundos de códigos mal escritos;
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 6/20
Código testado é mais con�ável;
Permite alterações sem medo (coragem);
Testa situações de sucesso e de falha;
Resulta em outras práticas XP como: Código coletivo, refatoração, integração contínua;
Serve como métrica do projeto (teste ==requisitos);
Gera e preserva um “conhecimento” sobre as regras de negócios do projeto.
Organização dos testes e práticas XP no Teste Unitário
Abaixo na �gura 3, temos um diagrama que mostra a forma como as classes de testes �cam
organizadas em um projeto codi�cado em Java e a correlação com algumas práticas XP.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 7/20
Figura 3. Organização das classes de testes.
Quando fazer Teste Unitário?
No início: Primeiro projetar e escrever as classes de testes, depois as classes com regra de negócios.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 8/20
Diariamente: É SUGERIDO que seja rodado os testes várias vezes ao dia (é fácil corrigir pequenos
problemas do que corrigir um “problemão” somente no �nal do projeto).
Quem faz o Teste Unitário?
Test Case (para cada classe): Desenvolvedor (Projeta, escreve e roda).
Test Suite(Roda vários test cases): Coordenador e Desenvolvedor (Projeta, escreve e roda).
Vale lembrar que o Teste de aceitação (homologação) é feito junto ao cliente.
Outra visão nova, interessante e muito polêmica, é a aproximação da responsabilidade dos testes ao
programador, o que em algumas outras abordagens metodológicas é feito somente por equipes
separadas, como por exemplo, uma equipe de teste/homologação.
Porém esse contexto é a base de qualquer metodologia ágil, pois dessa forma, o próprio programador,
ao criar e executar os testes, adquiri um controle maior e imediato na prevenção e correção de bugs,
contribuindo substancialmente para redução do tempo de vida de um projeto.
Teste Unitário: O que testar?
Sempre nós �camos em dúvida sobre o que devemos testar em nossas classes, existem alguns
macetes que podem nos ajudar a descobrir quais e quantos testes deverão ser escritos:
56
TESTE GRÁTIS
BLACK NOVEMBERVocê e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 9/20
A principal regra para saber o que testar é: “Tenha criatividade para imaginar as possibilidades
de testes”;
Comece pelas mais simples e deixe os testes “complexos“ para o �nal;
Use apenas dados su�cientes (não teste 10 condições se três forem su�cientes);
Não teste métodos triviais, tipo get e set;
No caso de um método set, só faça o teste caso haja validação de dados;
Achou um bug? Não conserte sem antes escrever um teste que o pegue (se você não o �zer, ele
volta).
Para �xar bem essas dicas, na �gura 4, temos um exercício de imaginação, onde você deverá achar as
possibilidades de testes neste diagrama de classe.
Claro que não existe uma resposta única para esse exercício, pois você, baseando-se em suas
experiências anteriores e sua criatividade, pode ter várias visões acerca dessa classe.
Classe para exercício de imaginação
Figura 4. Classe para exercício de imaginação.
O que é JUnit?
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 10/20
Agora sim, depois dessa pequena conceituação acima sobre testes unitários, você verá a partir desse
tópico que o JUnit é um framework que facilita o desenvolvimento e execução de testes unitários
em código Java.
Ele Fornece uma completa API (conjunto de classes) para construir os testes e Aplicações grá�cas e
em modo console para executar os testes criados.
Por que usar JUnit?
Os principais motivos que favorecem o uso desse framework são:
JUnit pode veri�car se cada unidade de código funciona da forma esperada;
Facilita a criação, execução automática de testes e a apresentação dos resultados;
É Orientado a Objeto;
É free e pode ser baixado em: www.junit.org
Como instalar o JUnit?
Para usar o JUnit em sua máquina basta ter em mente essas duas idéias:
Caso você não tenha o JUnit instalado, faça o download do arquivo junit.jar em www.junit.org,
após inclua-o no classpath para compilar e rodar os programas de teste.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 11/20
Porém o JUnit já vem con�gurado nas versões recentes de IDEʼs como Eclipse, NetBeans,
JBuilder, BlueJ e outros.
Planejando os testes no JUnit
Metodologias ágeis como Extreme Programming, exigem organização e disciplina, portanto é
sugerido que você faça um bom planejamento antes de sair por aí escrevendo código feito um doido.
A lista abaixo exempli�ca bem como você pode planejar e executar seus testes:
De�na uma lista de tarefas a implementar (o que testar);
Escreva uma classe (test case) e implemente um método de teste para uma tarefa da lista;
Rode o JUnit e certi�que-se que o teste falha;
Implemente o código mais simples que rode o teste;
Refatore o código para remover a duplicação de dados;
Caso necessário, escreva mais um teste ou re�ne o existente;
Faça esses passos para toda a lista de tarefas;
Arquitetura das classes no JUnit
Para uma melhor compreensão de como o JUnit funciona é importante que entenda como suas
classes estão organizadas dentro da API do framework (ver �gura 5). 56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 12/20
Classes do JUnit 
Figura 5. Classes do JUnit.
Como implementar o JUnit
Veja um exemplo de como você pode codi�car em Java, classes de testes:
Crie uma classe que estenda junit.framework.TestCase para cada classe a ser testada:
Para cada método a ser testado de�na um método public void test???() no test case SuaClasse:
Analisando o resultado no JUnit
import * 
class SuaClasseTest extends TestCase 
junit framework. . ;
{...
}
1
2
3
public int Soma Object o 
 
SuaClasseTest: public void testSoma
( ...) {...
}
()
1
2
3
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 13/20
Quando os testes forem executados em modo grá�co, Veja na �gura 6, que os métodos testados
podem apresentar os seguintes resultados: verde para sucesso, roxo para falha e vermelho para
exceção.
Resultados possíveis da execução dos testes
Figura 6. Resultados possíveis da execução dos testes.
Criando a classe de teste no Eclipse
Para exempli�car o uso do JUnit, usaremos o IDE Eclipse 3.0, que atualmente é um dos melhores
ambientes para desenvolvimento de aplicações Java e por ser um projeto totalmente free que já
incorpora em sua instalação, várias funcionalidades que aplicam práticas XP como refatoração,
testes unitários e padrões. consulte a seção links desse artigo, o endereço o�cial do projeto Eclipse
para você baixá-lo.
Portanto, nesse caso, você não precisará fazer o download do JUnit e instalá-lo separadamente, pois
o mesmo já está embutido no Eclipse.
Veja na �gura 7 a estrutura do test case CaculoTest.java, que é uma classe de testes implementada em
Java através do Eclipse. 56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 14/20
Estrutura de uma classe de teste (test case) 
Figura 7. Estrutura de uma classe de teste (test case).
Testando a classe no Eclipse
Na �gura anterior, você viu a sua classe de teste, e agora na �gura 8, você verá a classe a ser testada
para aquele test case.
Classe Calculo.java que será testada
Figura 8. Classe Calculo.java que será testada.
Rodando o teste em modo grá�co no Eclipse
Conforme mostra na �gura 9 para rodar o teste em modo grá�co pelo Eclipse, abra sua classe de
teste, clique no menu Run\Run As e escolha a opção JUnit Test.
Iniciando o teste em modo grá�co
Figura 9. Iniciando o teste em modo grá�co. 56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 15/20
Resultado em caso de sucesso
Você pode notar na �gura 10, que o teste case CalculoTest.java está usando a declaração assertiva do
método assertEquals() , que é assinado com dois parâmetros principais: o valor esperado, e valor
retornado.
Observe que para isso instanciamos os atributos(variáveis) PassaValor1 = 10, PassaValor2 = 5 e
RetornoEsperado = 15.
Sendo que para o atributo RetornoFeito atribuímos o resultado do método xecutaCalculo() da classe
Calculo, passando como parâmetros PassaValor1 e PassaValor2.
E por �nal usamos o método assertEquals ( RetornoEsperado , RetornoFeito ), paracomparar o valor
esperado com o valor retornado após a execução do método E xecultaCalculo() .
Veja que na lateral esquerda da tela temos o resultado da execução do teste através do JUnit, que
nesse exemplo retornou com sucesso(verde), pois os valores passados(10 e 5) certamente quando
somados retornam 15.
Resultado com SUCESSO após a execução do teste 
Figura 10. Resultado com SUCESSO após a execução do teste.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 16/20
Resultado em caso de FALHA no Eclipse
Agora na �gura 11, seguindo o mesmo raciocínio, vamos simular uma execução com falha, para isso,
mudaremos o atributo PassaValor2 para 6, dessa forma, claramente que 10 somado a 6 não dá 15
(valor esperado), dessa forma, o JUnit retornará uma falha (vermelha), observe também, que na parte
inferior da lateral esquerda da tela, ele mostra qual método falhou, e qual foi à falha.
Resultado com FALHA após a execução do teste
Figura 11. Resultado com FALHA após a execução do teste.
Con�ra neste artigo sobre Java Test onde iremos nos aprofundar mais no assunto.
Links Úteis
Bate-papo sobre mobile:
Neste DevCast temos um bate-papo sobre o desenvolvimento de apps mobile. Falamos aqui sobre quais tecnologias estudar, quando optar
por cada uma e o que o mercado espera do desenvolvedor atualmente.
CRUD em PHP e MVC com Busca e Paginação:
Aprenda a implementar uma busca, paginação e conversão monetária em PHP e MVC. Para isso vamos utilizar o projeto que criamos no
curso “Como implementar um CRUD em PHP com MVC”.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
http://www.devmedia.com.br/junit-implementando-testes-unitarios-em-java-parte-ii/1549
http://www.devmedia.com.br/bate-papo-sobre-mobile/38937
http://www.devmedia.com.br/exemplo/crud-em-php-e-mvc-com-busca-e-paginacao/37
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 17/20
Conectando no SQL Server utilizando PDO em PHP:
Neste conteúdo você aprenderá a conectar no Banco de Dados SQL Server utilizando PDO em PHP. PDO é uma classe desenvolvida
especi�camente para trabalhar com procedimentos relacionados a BDs.
Saiba mais sobre JUnit ;)
Como se tornar um programador Java: Guia de Carreira Java:
Nesse Guia de Referência você encontrará o conteúdo que precisa para iniciar seus estudos sobre a tecnologia Java, base para o
desenvolvimento de aplicações desktop, web e mobile/embarcadas.
Testes unitários, de integração e de aceitação na prática:
Como implementar esses diferentes tipos de testes com as ferramentas Gradle, JUnit, Hamcrest e Concordion.
Principais Ferramentas de Apoio ao Desenvolvimento Java:
Veja neste artigo quais são as principais ferramentas disponíveis no mercado para apoio ao desenvolvimento de so�ware na plataformas Java.
Tecnologias:
eXtreme Programming Java JUnit TDD Teste Unitário UML
Marcar como concluído Anotar
Inicie agora sua carreira de 56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
http://www.devmedia.com.br/conectando-no-sql-server-utilizando-pdo-em-php/38936
http://www.devmedia.com.br/guia/carreira-programador-java/37809
http://www.devmedia.com.br/testes-unitarios-de-integracao-e-de-aceitacao-na-pratica/34105
http://www.devmedia.com.br/principais-ferramentas-de-apoio-ao-desenvolvimento-java/34126
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 18/20
programador por apenas R$49,90/mês
Ainda está em dúvida? Experimente a plataforma grátis durante 7 dias. Faça um teste grátis
BENEFÍCIOS
Saiba mais
Suporte em tempo real
Certi�cado de autoridade
Exercícios para praticar
Estudo gami�cado
Planos de estudo para
cada carreira de
programador
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/pro/
https://www.devmedia.com.br/pro/
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 19/20
Por Manoel
Em 2009
RECEBA NOSSAS NOVIDADES
Informe o seu e-mail Receber Newsletter
Suporte ao aluno - Tire a sua dúvida.
56
TESTE GRÁTIS
BLACK NOVEMBER Você e seu amigo por apenas 49,90 por mês! SAIBA MAIS
Buscar
https://www.devmedia.com.br/perfil/manoel-pimentel-medeiros-1
https://www.devmedia.com.br/
https://www.devmedia.com.br/join/
https://www.devmedia.com.br/marketing/blackfriday/
19/11/2020 JUnit Tutorial: Uma introdução ao JUnit e Testes Unitários no Java
https://www.devmedia.com.br/junit-tutorial/1432 20/20
Tecnologias
Exercicios
Cursos
Artigos
Revistas
Fale conosco
Trabalhe conosco
Assinatura para empresas
Assine agora
Hospedagem web por Porta 80 Web Hosting
56
https://www.devmedia.com.br/tecnologia/
https://www.devmedia.com.br/tecnologia/novos-desafios/
https://www.devmedia.com.br/cursos/
https://www.devmedia.com.br/artigos/
https://www.devmedia.com.br/revistas/
https://www.devmedia.com.br/fale-conosco/
https://www.devmedia.com.br/perfil/empresarial/devmedia
https://www.devmedia.com.br/empresarial/
https://www.devmedia.com.br/shop/
https://github.com/DevMedia
https://www.facebook.com/devmedia.com.br/
http://twitter.com/devmedia
https://www.instagram.com/devmedia.com.br/
https://www.youtube.com/c/DevmediaBrasil

Continue navegando