A classe JUnit Assertions contém uma coleção de métodos estáticos que permitem realizar testes de unidade. Asserções são um dos principais recursos do JUnit. Esta classe tem mais de cinquenta métodos diferentes. Alguns testes da classe Assertions falharão se uma condição for verdadeira, enquanto outros falharão se uma condição for falsa.
A classe Assertions também tem muitos métodos sobrecarregados. Cada método de asserção tem pelo menos dois métodos sobrecarregados. Descubra alguns dos métodos de classe Assertions mais populares e descubra como usá-los para realizar testes de unidade.
O método assertEquals
O método assertEquals da JUnit 5 tem mais de dez variações. Esse método é um dos métodos de classe Assertions mais populares. Uma variação do método assertEquals recebe um valor esperado e a função que você deseja avaliar (valor real). Uma segunda variante principal recebe um terceiro argumento adicional. Esta é uma mensagem de erro que será exibida se o Teste de unidade JUnit falha.
A sobrecarga do método assertEquals acontece com diferentes tipos de dados. Alguns métodos de sobrecarga assertEquals recebem um quarto argumento chamado delta. Outras versões substituem a string de falha por uma interface funcional do fornecedor, na forma de um
expressão lambda.AssertionsMethods Classe Java
pacote com.programa;
públicoclasseMétodos de asserções{
públicoestáticointquadrado(int num){
Retorna num * num;
}
}
A classe Java AssertionsMethods acima tem um único método chamado quadrado. O método quadrado recebe um valor inteiro e retorna seu quadrado. Para testar o método quadrado e qualquer método futuro da classe AssertionsMethods, você precisará criar um caso de teste JUnit.
AsserçõesMétodosTeste Caso de Teste JUnit
pacote com.programa;
importarestáticoorg.junit.Afirmar.assertEquals;
importarestáticoorg.junit.Júpiter.api.Afirmações.*;importarorg.junit.Júpiter.api.Teste;
classeAsserçõesMétodosTeste{
@Teste
vaziotestSquare(){
assertEquals(25, Métodos de Asserção.quadrado(5));
assertEquals (36, AssertionMethods.square (6), "Seus valores quadrados não correspondem.");
assertEquals (49, AssertionMethods.square (7), () ->"Seus valores quadrados não correspondem.");
}
}
O método testSquare() usa três variações de assertEquals() para testar o método square(). Cada assertEquals() é um sucesso, pois todos os valores esperados correspondem aos valores reais retornados pelo método square().
O método assertNull
A classe JUnit Assertions tem exatamente três métodos assertNull. Cada um desses métodos recebe um ou mais argumentos e declara se o objeto fornecido é nulo. Se um determinado objeto não for nulo, o teste falhará.
@Teste
públicovaziotestStringValue(){
Corda stringValue = nulo;
assertNull(stringValue);
assertNull (stringValue, "O valor da sua string não é nulo");
assertNull (stringValue, () ->"O valor da sua string não é nulo");
}
O primeiro método assertNull() pega um objeto string e verifica se ele é nulo. O segundo método assertNull() usa um objeto string e uma mensagem string para exibir se o teste falhar. O terceiro e último método assertNull() pega o objeto que você deseja avaliar e uma interface funcional do Supplier.
No caso de teste acima, a interface Supplier atua como um destino de atribuição para uma expressão lambda. A expressão lambda gera uma mensagem de erro se o teste falhar.
O método assertTrue
O método assertTrue() tem seis variações. Cada método afirma se uma determinada condição é verdadeira. Se uma condição assertTrue() for falsa, o teste falhará.
@Teste
vaziotestEvenNumbers(){
int num1 = 10;
int num2 = 16;
int num3 = 26;
assertTrue (num1 < número2);
assertTrue (num3 > número2, "Sua condição não é verdadeira.");
assertTrue (num1 < num3, () ->" Sua condição não é verdadeira.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Seu valor não é um número par.");
assertTrue(() -> num3%2 == 0, () ->"Seu valor não é um número par.");
}
O método testEvenNumbers() demonstra como usar todos os seis métodos assertTrue(). Todos os métodos acima são verdadeiros, portanto, este teste de unidade é executado sem falhas ou erros.
- assertTrue (condição booleana): este método recebe uma condição booleana e afirma se ela é verdadeira. O exemplo deste método no código acima afirma se o primeiro valor inteiro é menor que o segundo.
- assertTrue (condição booleana, mensagem String): este método usa uma condição booleana para testar e uma string para exibir se for falsa.
- assertTrue (condição booleana, fornecedor
messageSupplier): este método utiliza uma interface funcional booleana e uma interface de fornecedor, como uma expressão lambda. O fornecedor da mensagem contém uma string a ser exibida se a condição booleana for falsa. - assertTrue (BooleanSupplier booleanSupplier): esse método usa uma interface funcional BooleanSupplier, na forma de uma expressão lambda que é avaliada como verdadeira ou falsa. O exemplo desse método no código usa uma expressão lambda. Ele testa o resto do primeiro inteiro dividido por dois para determinar se é par ou ímpar.
- assertTrue (BooleanSupplier booleanSupplier, String message): esse método usa uma interface funcional BooleanSupplier na forma de uma expressão lambda. Também leva uma mensagem de string para imprimir se o BooleanSupier não for verdadeiro.
- assertTrue (BooleanSupplier booleanFornecedor, Supplier
messageSupplier): este método usa uma interface funcional BooleanSupplier para confirmar. Ele também usa uma interface funcional de fornecedor, que é uma expressão lambda que imprimirá um valor de string se o teste falhar.
O método assertFalse
O método assertFalse() é o oposto do método assertTrue(). Este método avalia uma determinada condição para ver se ela é falsa. Se uma determinada condição for verdadeira, o teste assertFalse() falhará. O método assertFalse() também tem seis variações que aceitam os mesmos argumentos que suas contrapartes assertTrue().
@Teste
vaziotestNotEvenNumbers(){
int num1 = 11;
int num2 = 17;
int num3 = 27;
assertFalse (num2 < número1);
assertFalse (num2 > número3, " Sua condição não é falsa.");
assertFalse (num3 < num1, () ->" Sua condição não é falsa.");
assertFalse(() -> num1%2 == 0);
assertFalse(() -> num2%2 == 0, "Seu valor é um número par.");
assertFalse(() -> num3%2 == 0, () ->"Seu valor é um número par.");
}
Os seis métodos assertFalse() no método testNotEvenNumbers() resultam em false, o que significa que os testes assertFalse() são bem-sucedidos.
Os benefícios do teste unitário
O teste unitário é parte integrante do processo de desenvolvimento de software. Grandes projetos de software falham por vários motivos, desde as equipes que trabalham neles até as abordagens de desenvolvimento.
O objetivo do teste de unidade é eliminar falhas de software, fornecendo detecção precoce de erros. Isso exige que as equipes desenvolvam especificações claras, melhorem o design do software por meio de documentação de erros e forneçam suporte para manutenção de software.
O teste de unidade não é a única abordagem de teste de software que você deve empregar em seu ciclo de vida de desenvolvimento, é apenas um bom lugar para começar.