No desenvolvimento de software, o teste de unidade é um processo que isola e testa seções dedicadas de um aplicativo. Unidades são o termo formal para essas seções dedicadas. Em seu aplicativo Java, uma unidade é um método.
Existem muitas estruturas de teste de unidade disponíveis para desenvolvedores Java. Entre os principais frameworks está o JUnit 5.
Por que o teste de unidade é importante?
Se você já escreveu instruções de depuração para imprimir e verificar o valor de uma variável, parabéns; você criou um teste de unidade. Essa seção descartável do código foi necessária porque você não estava recebendo a saída desejada.
Mas e se você estivesse recebendo a saída desejada e o código ainda contivesse um erro em algum lugar? Você pode implantar o aplicativo e esse bug pode resultar em uma violação de segurança posteriormente. Para aplicativos que armazenam dados de usuários, os riscos são altos quando há uma violação de segurança.
O teste de unidade tem como alvo todas as seções do seu aplicativo, independentemente de estar causando um erro ou não. Portanto, o teste de unidade desempenha um papel importante na
boa segurança de software.O que é JUnit 5?
JUnit 5 é mais do que apenas outra estrutura de teste de unidade. Tem vários sub-projetos, nomeadamente a Plataforma JUnit, a JUnit Jupiter e a JUnit Vintage. Cada um desses três componentes possui módulos exclusivos que trabalham juntos para melhorar os testes para programadores Java.
A plataforma JUnit 5 está disponível nas versões mais recentes das principais plataformas de desenvolvimento integrado (IDE) Java. Os IDEs Java que suportam JUnit 5 são:
- INtelliJ IDEA
- Eclipse
- NetBeans
- Código do Visual Studio
Criando testes de unidade com JUnit 5
Este programa de amostra usa o JUnit 5 para criar vários testes de unidade em um aplicativo de calculadora simples.
A classe da calculadora
pacote aplicativo;
públicoclasseCalculadora{
públicoestáticointadicionar(int número1, int número2){
Retorna num1 + num2;
}públicoestáticointsubtrair(int número1, int número2){
Retorna num1 - num2;
}públicoestáticointmultiplicar(int número1, int número2){
Retorna num1 * num2;
}
públicoestáticointdividir(int número1, int número2){
Retorna num1 / num2;
}
}
o classe Java acima executa quatro operações estáticas: adição, subtração, multiplicação e divisão. Cada método recebe dois argumentos inteiros e retorna um único valor inteiro.
A aula de teste JUnit 5
pacote teste;
importarestático org.junit. Afirmar.*;
importar aplicativo. Calculadora;
importarorg.junit.Teste;públicoclasseTeste da Calculadora{
@Teste
públicovaziotesteAdicionar(){
assertEquals(7, Calculadora.adicionar(3, 4));
}@Teste
públicovaziotesteSubtrair(){
assertEquals(6, Calculadora.subtrair(9, 3));
}@Teste
públicovaziotesteMultiplique(){
assertEquals(10, Calculadora.multiplicar(5, 2));
}
@Teste
públicovaziotestDivide(){
assertEquals(2, Calculadora.dividir(4, 2));
}
}
Teste da Calculadora apresenta dois conceitos importantes: a @Teste anotação e o assertEquals() método. A anotação @Test indica que o método diretamente abaixo dela é um método de teste. Na classe de teste acima existem quatro métodos de teste, um para cada uma das operações da calculadora.
Todos os métodos de teste usam o método assertEquals(). Este método recebe dois argumentos obrigatórios e um terceiro argumento opcional. O primeiro argumento dado ao método assertEquals() acima é o resultado esperado e o segundo argumento é o método (ou unidade) que você deseja avaliar.
A classe CalculatorTest não possui um método principal, mas as anotações JUnit @Test tornam cada um dos métodos de teste executáveis. A execução da classe CalculatorTest no Eclipse produz a seguinte interface:
Como você pode ver, cada teste é bem sucedido. Há quatro testes, e todos eles rodaram sem erros ou falhas.
O teste de unidade de aprendizagem pode expandir suas oportunidades de carreira
Como desenvolvedor, saber testar software é uma habilidade vantajosa. Certamente melhorará seu fluxo de trabalho e, com sorte, tornará seu código mais fácil de usar para outras pessoas. No entanto, existe um ramo de desenvolvimento de software que se concentra exclusivamente em testes. Esses engenheiros são conhecidos como testadores de software.