Alura > Cursos de Programação > Cursos de Java > Conteúdos de Java > Primeiras aulas do curso TDD e Java: testes automatizados com JUnit

TDD e Java: testes automatizados com JUnit

Testes automatizados - Apresentação

Boas-vindas ao treinamento de testes automatizados em Java com JUnit, com o Rodrigo Ferreira!

O JUnit é a principal biblioteca Java utilizada para escrever os chamados testes de unidade, que nos permitem saber rapidamente se o código está funcionando conforme o esperado, ou mesmo se mudanças nesse código tenham impactado de alguma maneira no projeto.

Neste treinamento, vamos aprender como funcionam os testes automatizados, qual a sua importância e aplicação nas empresas e como fazê-los com o JUnit.

Faremos o passo a passo para instalar e configurar a biblioteca, bem como escrever os testes. Também vamos aprender o conceito de TDD (Test Driven Development ou Desenvolvimento Guiado por Testes), além das principais anotações e configurações do JUnit para a escrita de testes automatizados.

Nos vemos na primeira aula!

Testes automatizados - Motivação dos testes automatizados

Uma pessoa que trabalha com programação provavelmente vai escrever muitos códigos diferentes ao longo da sua carreira. Além de entender qual funcionalidade vamos implementar e analisar como colocá-la em prática, também é preciso usar padrões de projeto específicos, escrever códigos para fazer validações, algoritmos, lógicas, etc.

Em todos esses casos, podem surgir dúvidas: será que esse código vai funcionar como esperado? Ele atende a todas as regras de negócio? Ele abrange todos os cenários possíveis?

Por exemplo, o que acontece se usarmos o valor 0 em um código que faz um cálculo? Ou se tivermos uma variável nula, positiva ou negativa nesse mesmo cálculo?

É por isso que precisamos sempre testar os nossos códigos. Não é à toa que existem profissionais cujo trabalho é dedicado a testar as funcionalidades escritas por outras pessoas. A depender do tamanho da empresa e do número de projetos, pode haver até um time de testes.

Neste caso, estamos falando do teste manual. Porém, há algumas desvantagens para essa categoria de teste, que geralmente é:

Para eliminar ou diminuir esses problemas, simplificando o trabalho e tornando-o mais produtivo, temos o conceito de testes automatizados. Esses, por outro lado, apresentam as seguintes vantagens:

Por essas razões, a prática de testes automatizados se tornou muito popular e frequente nas empresas, e pessoas que trabalham com qualidade de código comumente a utilizam no dia a dia.

Agora, você já sabe por que aprender a fazer testes automatizados e usar o JUnit. No próximo vídeo, vamos colocar a mão na massa e escrever um teste automatizado. Até lá!

Testes automatizados - Escrevendo um teste automatizado

Na última aula, conversamos sobre as razões para usar os testes automatizados. Hoje, vamos aprender a escrever um!

Primeiro, vamos criar um código simples simulando uma calculadora que realiza operações de soma. Abriremos o Eclipse IDE e criaremos um projeto Java tradicional. Dentro deste projeto, precisaremos de um único pacote com uma classe chamada Calculadora, que utiliza o método somar() conforme o código abaixo:

package br.com.alura.tdd;

public class Calculadora {

    public int somar(int a, int b) {
        return a + b;
    }

}

O que essa calculadora faz é receber dois números inteiros (int a e int b) e devolver um número também inteiro, sendo a soma de a e b (return a + b).

Feito isso, é hora de testar a nossa calculadora!

Um teste automatizado nada mais é do que uma classe, um código cujo objetivo é testar outro. Por isso, criaremos uma classe chamada CalculadoraTestes no mesmo pacote.

Para fazer os testes, usaremos o método main(). Precisamos instanciar um objeto (no caso, Calculadora), usando o código Calculadora calc = new Calculadora() e criar uma variável para armazenar o retorno (int soma = calc.somar(a, b)). Para verificar se o código está funcionando corretamente, faremos um System.out.println() da variável soma. Para este exercício, simularemos a soma dos números 3 e 7. O código completo ficará da seguinte forma:

package br.com.alura.tdd;

public class CalculadoraTestes {

    public static void main(String[] args) {
        Calculadora calc = new Calculadora();
        int soma = calc.somar(3, 7);
        System.out.println(soma);
    }

}

Perceba que o teste automatizado é como uma simulação do uso daquela classe, ou seja, é necessário instanciar, chamar um método, passar parâmetros, pegar o retorno e assim por diante.

Para rodar o teste, pressionaremos "CTRL + F11" ou clicaremos com o botão direito do mouse em qualquer parte da tela, acessando "Run as > Java application". Feito isso, o console exibirá o valor 10.

Isso significa que, para o cenário em que somamos os números 3 e 7, a nossa calculadora exibe como resultado o número 10. Mas note que, por mais simples e enxuto que seja esse método, não necessariamente teremos um único cenário possível.

Seria interessante escrevermos códigos para testarmos esses cenários distintos, como:

Abaixo temos o código explicitando essas possibilidades:

package br.com.alura.tdd;

public class CalculadoraTestes {

    public static void main(String[] args) {
        Calculadora calc = new Calculadora();
        int soma = calc.somar(3, 7);
        System.out.println(soma);

        soma = calc.somar(3, 0);
        System.out.println(soma);

        soma = calc.somar(0, 0);
        System.out.println(soma);

        soma = calc.somar(3, -1);
        System.out.println(soma);
    }

}

Ao executarmos, teremos os valores 10, 3, 0 e 2 no console. Ou seja, todas as operações funcionaram corretamente. O foco aqui não é o código da calculadora, mas sim o teste que desenvolvemos, que é exatamente um teste automatizado.

Porém, imagine que uma calculadora opera com, pelo menos, quatro operações básicas (somar, subtrair, multiplicar e dividir), cada um com vários cenários. Isso resultaria em um código muito extenso. Além disso, o uso do método main() exige a realização de algumas etapas de maneira manual, como a execução da classe por meio do "Run as" e a checagem dos resultados no console.

Outro problema é que o console exibe apenas o número como resultado. Com isso, é necessário lembrar, por exemplo, que o resultado da soma entre 3 e 7 é 10 e conferir se o número exibido é realmente 10. Se estivermos lidando com uma grande variedade de cenários, essa abordagem tende a se tornar cansativa.

É aí que entra o JUnit, uma biblioteca que serve para simplificar todo esse processo. Na próxima aula, vamos aprender o que é o JUnit e como usá-lo para deixar o código mais simples. Nos vemos lá!

Sobre o curso TDD e Java: testes automatizados com JUnit

O curso TDD e Java: testes automatizados com JUnit possui 123 minutos de vídeos, em um total de 41 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas