Junit Assert e AssertEquals com exemplo

O que é declaração Junit?

Assert é um método útil para determinar o status de aprovação ou reprovação 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 asserções, como booleanas, nulas, idênticas, etc.

Junit fornece uma classe chamada Assert, que fornece vários métodos de asserção úteis para escrever casos de teste e para detectar falhas de teste

Os métodos assert são fornecidos pela classe org.junit.Assert que estende java.lang.Object classe.

JUnit Afirmar métodos

Booleano

Se quiser testar as condições booleanas (verdadeiro ou falso), você pode usar os seguintes métodos de afirmação

  1. assertTrue (condição)
  2. assertFalse (condição)

Aqui a condição é um valor booleano.

Objeto nulo

Se quiser verificar o valor inicial de um objeto/variável, você tem os seguintes métodos:

  1. assertNull(objeto)
  2. assertNotNull(objeto)

Aqui o objeto é Java objeto por exemplo, assertNull(real);

Idêntico

Se você quiser verificar se os objetos são idênticos (ou seja, comparando duas referências ao mesmo objeto java) ou diferentes.

  1. assertSame(esperado, real), Ele retornará verdadeiro se esperado == real
  2. assertNotSame(esperado, real)

Afirmar Igual

Se quiser testar a igualdade de dois objetos, você tem os seguintes métodos

  • assertEquals(esperado, real)

Ele retornará verdadeiro se: esperado.equals(real) retorna verdadeiro.

Afirmar matriz igual

Se quiser testar a igualdade de matrizes, você tem os seguintes métodos fornecidos abaixo:

  • 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 indicado abaixo:

  • assertEquals(esperado[i],real[i])
  • assertArrayEquals(esperado[i],real[i])

Mensagem de falha

Se você quiser gerar algum erro de afirmação, você tem falhou() isso sempre resulta em um veredicto de reprovação.

  • Falha(mensagem);

Você pode ter um método de afirmação com um adicional Tanga parâmetro como o primeiro parâmetro. Esta string será anexada à mensagem de falha se a asserção falhar. Por exemplo falha (mensagem) pode ser escrito como

  • assertEquals(mensagem, esperado, real)

JUnit assertEquals

Você tem assertEquals(a,b) que depende do é igual a () método da classe Object.

  • Aqui será avaliado como a.igual( b ).
  • Aqui a classe em teste é usada para determinar uma relação de igualdade adequada.
  • Se uma classe não substituir o é igual a () método de objeto classe, ele obterá o comportamento padrão de é igual a () método, ou seja, identidade do objeto.

If a e b são primitivos como byte, int, booleano, etc. então o seguinte será feito para assertEquals(a,b) :

a e b serão convertidos para seu tipo de objeto wrapper equivalente (Byte, inteiro, Booleano, etc.) e depois a.igual(b) será avaliado.

Por exemplo: considere as strings mencionadas abaixo com os mesmos valores, vamos testá-las usando assertTrue

String obj1="Junit";
String obj2="Junit";
assertEquals(obj1,obj2);

A instrução assert acima retornará true, pois obj1.equals(obj2) retorna true.

Asserções de ponto flutuante

Quando você deseja comparar tipos de ponto flutuante (por exemplo duplo or flutuar), você precisa de um parâmetro obrigatório adicional delta para evitar problemas com erros de arredondamento ao fazer comparações de ponto flutuante.

A afirmação é avaliada conforme abaixo:

  • Math.abs( esperado – real ) <= delta

Por exemplo:

assertEquals(aDoubleValor, outroDoubleValor, 0.001)

JUnit Exemplo de afirmação

O exemplo abaixo demonstra como afirmar uma condição usando JUnit afirmar métodos.

Vamos criar uma classe de teste simples chamada Junit4AssertionTest.java e uma classe de executor de testes TestRunner.java.

Você criará poucas variáveis ​​e declarações assert importantes em JUnit.

Neste exemplo, você executará nossa classe de teste usando TestRunner.java

Passo 1) Vamos criar uma classe cobrindo todos os métodos importantes de instrução assert em junit:

Junit4AssertionTest.java

package guru99.junit;		

import static org.junit.Assert.*;				
import org.junit.Test;		


public class Junit4AssertionTest {				

    @Test		
    public void testAssert(){					
        		
        //Variable declaration		
        String string1="Junit";					
        String string2="Junit";					
        String string3="test";					
        String string4="test";					
        String string5=null;					
        int variable1=1;					
        int	variable2=2;					
        int[] airethematicArrary1 = { 1, 2, 3 };					
        int[] airethematicArrary2 = { 1, 2, 3 };					
        		
        //Assert statements		
        assertEquals(string1,string2);					
        assertSame(string3, string4);					
        assertNotSame(string1, string3);					
        assertNotNull(string1);			
        assertNull(string5);			
        assertTrue(variable1<variable2);					
        assertArrayEquals(airethematicArrary1, airethematicArrary2);					
    }		
}		

Passo 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) {									
      Result result = JUnitCore.runClasses(Junit4AssertionTest.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      

Passo 3) Vamos analisar o resultado esperado passo a passo:

Considere todas as declarações assert, uma por uma:

  1. 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

Então assertEquals(string1,string2) retornará verdadeiro.

  1. assertSame(string3, string4);

A funcionalidade “assertSame()” serve para verificar se os dois objetos se referem ao mesmo objeto.

Como string3=”test” e string4=”test” significa que string3 e string4 são do mesmo tipo, então assertSame(string3, string4) retornará verdadeiro.

  1. 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=”test” significa que string1 e string3 são de tipos diferentes, então assertNotSame(string1, string3) retornará verdadeiro.

  1. 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.

  1. assertNull(string5);

A funcionalidade “assertNull()” serve para verificar se um objeto é nulo.

Como string5= null que é um valor nulo, assertNull(string5) retornará verdadeiro.

  1. assertTrue(variável1

A funcionalidade “assertTrue()” serve para verificar se uma condição é verdadeira.

Como variável1=1 e variável2=2, o que mostra que variável1 verdadeiro.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

A funcionalidade “assertArrayEquals()” serve para verificar se o array esperado e o array 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

Como todas as sete afirmações assertivas de Junit4AssertionTest.java class retorna verdadeiro, portanto, quando você executa a classe test assert, ela retornará um teste bem-sucedido. (veja a saída abaixo)

Passo 4) Clique com o botão direito em Junit4AssertionTest.java e clique em runAs->JUnit. Você verá a saída conforme abaixo:

JUnit Exemplo de afirmação

A saída acima mostra um resultado de teste bem-sucedido conforme esperado.

Resumo

Neste tutorial, você aprendeu todos os tipos importantes de métodos de asserção fornecidos por JUnit. Além disso, você viu os exemplos de declarações assert. O que mostra que se todas as instruções assert retornarem verdadeiras, então a GUI de teste retornará um resultado verdadeiro e se o único teste falhar, retornará um resultado com falha.