O que é Junit Assert?
Assert é um método útil para determinar o status Pass ou Fail de um caso de teste. Os métodos assert são fornecidos pela classe org.junit.Assert que estende a classe java.lang.Object.
Existem vários tipos de afirmações, como Booleana, Nula, Idêntica etc.
O Junit fornece uma classe chamada Assert, que fornece vários métodos de asserção úteis para escrever casos de teste e detectar falhas de teste
Os métodos assert são fornecidos pela classe org.junit.Assert que estende a classe java.lang.Object .
Neste tutorial, você aprenderá-
- Métodos JUnit Assert
- boleano
- Objeto nulo
- Idêntico
- Assert Equals
- Assert Array Equals
- Mensagem de falha
- JUnit assertEquals
- Asserções de vírgula flutuante
- Exemplo de declaração de JUnit
Métodos JUnit Assert
boleano
Se você quiser testar as condições booleanas (verdadeiro ou falso), você pode usar os seguintes métodos de declaração
- assertTrue (condição)
- assertFalse (condição)
Aqui, a condição é um valor booleano.
Objeto nulo
Se você deseja verificar o valor inicial de um objeto / variável, você tem os seguintes métodos:
- assertNull (objeto)
- assertNotNull (objeto)
Aqui, o objeto é o objeto Java, por exemplo, assertNull (real);
Idêntico
Se você deseja verificar se os objetos são idênticos (ou seja, comparando duas referências ao mesmo objeto java) ou diferentes.
- assertSame (esperado, real), retornará verdadeiro se esperado == real
- assertNotSame (esperado, real)
Assert Equals
Se você quiser testar a igualdade de dois objetos, você tem os seguintes métodos
- assertEquals (esperado, real)
Ele retornará verdadeiro se: esperado.equals (real) retornar verdadeiro.
Assert Array Equals
Se quiser testar a igualdade de matrizes, você tem os seguintes métodos, conforme fornecido a seguir:
- assertArrayEquals (esperado, real)
O método acima deve ser usado se os arrays tiverem o mesmo comprimento, para cada valor válido para i , você pode verificá-lo conforme mostrado abaixo:
- assertEquals (esperado [i], real [i])
- assertArrayEquals (esperado [i], real [i])
Mensagem de falha
Se você quiser lançar qualquer erro de asserção, você tem fail () que sempre resulta em um veredicto de falha.
- Falha (mensagem);
Você pode ter um método de asserção com um parâmetro String adicional como o primeiro parâmetro. Essa string será anexada à mensagem de falha se a asserção falhar. Por exemplo, falha (mensagem) pode ser escrita como
- assertEquals (mensagem, esperado, real)
JUnit assertEquals
Você tem assertEquals (a, b) que depende do método equals () da classe Object.
- Aqui, ele será avaliado como a.equals (b).
- Aqui, a classe em teste é usada para determinar uma relação de igualdade adequada.
- Se uma classe não sobrescrever o método equals () da classe Object , ela obterá o comportamento padrão do método equals () , ou seja, a identidade do objeto.
Se a e b forem primitivos, como byte , int , boolean , etc., o seguinte será feito para assertEquals (a, b):
a e b serão convertidos em seu tipo de objeto wrapper equivalente ( Byte, Integer , Boolean , etc.) e, em seguida, a.equals (b) será avaliado.
Por exemplo: considere as strings mencionadas abaixo com os mesmos valores, vamos testá-lo usando assertTrue
String obj1 = "Junit";String obj2 = "Junit";assertEquals (obj1, obj2);
A instrução assert acima retornará true conforme obj1.equals (obj2) retorna true.
Asserções de vírgula flutuante
Quando você deseja comparar tipos de ponto flutuante (por exemplo, double ou float ), você precisa de um delta de parâmetro adicional necessário para evitar problemas com erros de arredondamento ao fazer comparações de ponto flutuante.
A afirmação é avaliada conforme a seguir:
- Math.abs (esperado - real) <= delta
Por exemplo:
assertEquals (aDoubleValue, anotherDoubleValue, 0,001)
Exemplo de declaração de JUnit
O exemplo abaixo demonstra como declarar uma condição usando métodos de declaração JUnit.
Vamos criar uma classe de teste simples chamada Junit4AssertionTest.java e uma classe de executor de teste TestRunner.java .
Você criará algumas variáveis e importantes instruções assert no JUnit.
Neste exemplo, você executará nossa classe de teste usando TestRunner.java
Etapa 1) Vamos criar uma classe cobrindo todos os métodos importantes de declaração de afirmação em junit:
Junit4AssertionTest.java
package guru99.junit;import static org.junit.Assert. *;import org.junit.Test;public class Junit4AssertionTest {@Testepublic void testAssert () {// Declaração de variávelString string1 = "Junit";String string2 = "Junit";String string3 = "teste";String string4 = "teste";String string5 = null;variável int 1 = 1;variável interna 2 = 2;int [] airethematicArrary1 = {1, 2, 3};int [] airethematicArrary2 = {1, 2, 3};// Declarações afirmativasassertEquals (string1, string2);assertSame (string3, string4);assertNotSame (string1, string3);assertNotNull (string1);assertNull (string5);assertTrue (variável1Etapa 2) Você precisa criar uma classe de executor de teste para executar a classe acima:
TestRunner.java
package guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;public class TestRunner {public static void main (String [] args) {Resultado do resultado = JUnitCore.runClasses (Junit4AssertionTest.class);para (falha falha: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Result ==" + result.wasSuccessful ());}}Etapa 3) Vamos analisar a produção esperada passo a passo:
Considere todas as afirmações de afirmação, uma por uma:
- assertEquals (string1, string2);
Agora compare string1 = "Junit" com string2 = "Junit" com o método equals da classe de objeto. Substituindo o método assertEquals do método java.lang.Object.equals ():
string1.equals (string2) => retorna verdadeiro
Portanto, assertEquals (string1, string2) retornará verdadeiro .
- assertSame (string3, string4);
A funcionalidade "assertSame ()" serve para verificar se os dois objetos se referem ao mesmo objeto.
Como string3 = "teste" e string4 = "teste" significa que string3 e string4 são do mesmo tipo, então assertSame (string3, string4) retornará verdadeiro .
- assertNotSame (string1, string3);
A funcionalidade "assertNotSame ()" serve para verificar se os dois objetos não se referem ao mesmo objeto.
Como string1 = "Junit" e string3 = "teste" significa que string1 e string3 são de tipos diferentes, então assertNotSame (string1, string3) retornará verdadeiro .
- assertNotNull (string1);
A funcionalidade "assertNotNull ()" serve para verificar se um objeto não é nulo.
Como string1 = "Junit", que é um valor não nulo, assertNotNull (string1) retornará verdadeiro .
- assertNull (string5);
A funcionalidade "assertNull ()" serve para verificar se um objeto é nulo.
Como string5 = null, que é um valor nulo, assertNull (string5) retornará verdadeiro .
- assertTrue (variável1
A funcionalidade "assertTrue ()" serve para verificar se uma condição é verdadeira.
Visto que variável1 = 1 e variável2 = 2, o que mostra que a condição variável1
verdadeiro .
- assertArrayEquals (airethematicArrary1, airethematicArrary2);
A funcionalidade "assertArrayEquals ()" é verificar se a matriz esperada e a matriz resultante são iguais. O tipo de Array pode ser int, long, short, char, byte ou java.lang.Object.
Como airethematicArrary1 = {1, 2, 3} e airethematicArrary2 = {1, 2, 3} que mostra que ambas as matrizes são iguais, então assertArrayEquals (airethematicArrary1, airethematicArrary2) retornará verdadeiro
Uma vez que todas as sete instruções assert da classe Junit4AssertionTest.java retornam true, portanto, quando você executar a classe assert de teste, ela retornará um teste bem-sucedido. (veja a saída abaixo)
Etapa 4) Clique com o botão direito em Junit4AssertionTest.java e clique em runAs-> JUnit. Você verá a saída conforme a seguir:
A saída acima mostra um resultado de teste bem-sucedido conforme o esperado.
Resumo:
Neste tutorial, você aprendeu todos os tipos importantes de métodos de asserção fornecidos pelo JUnit. Além disso, você viu os exemplos de declarações assert. O que mostra que, se todas as instruções assert retornarem verdadeiras, a GUI de teste retornará um resultado verdadeiro e, se o único teste falhar, retornará um resultado com falha.