Junit Assert e AssertEquals com exemplo

⚡ Resumo Inteligente

JUnit Os métodos `Assert` e `AssertEquals` determinam o status de aprovação ou reprovação de um caso de teste comparando os valores esperados com os valores reais. Este recurso explica os métodos `assert` fornecidos por `org.junit.Assert`, incluindo asserções booleanas, nulas, de identidade, de igualdade e de matriz, com um exemplo completo e funcional.

  • Objetivo: Os métodos Assert da classe org.junit.Assert verificam as condições e detectam falhas nos testes.
  • 🔢 Tipos de métodos: As asserções booleanas, nulas, idênticas, iguais, iguais a arrays e de mensagem de falha abrangem verificações comuns.
  • 🟰 assertEquals: Compara valores usando o método equals(), encapsulandoping Primeiro, transforme elementos primitivos em objetos.
  • 🔬 Ponto flutuante: É necessária uma tolerância delta ao comparar valores de ponto flutuante ou de dupla precisão.
  • 🧪 Exemplo: Uma classe de teste e um executor demonstram que cada instrução assert chave retorna verdadeiro.

JUnit Assert e AssertEquals

O que é declaração Junit?

O método `assert` é útil para determinar o status de "Aprovado" ou "Reprovado" 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 booleana, nula, idêntica, etc.

JUnit Fornece uma classe chamada Assert, que oferece vários métodos de asserção úteis para escrever casos de teste e detectar falhas nos testes.

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

JUnit Afirmar métodos

Booleano

Se você deseja testar as condições booleanas (verdadeiro ou falso), pode usar os seguintes métodos de asserçã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 é um Java objeto, por exemplo, assertNull(real);

Idêntico

Se você deseja verificar se os objetos são idênticos (ou seja, comparar duas referências ao mesmo objeto), use o seguinte código: Java objeto) ou diferente:

  1. assertSame(esperado, atual) — Retornará verdadeiro se esperado == real.
  2. assertNotSame(esperado, real)

Afirmar Igual

Se você quiser testar a igualdade de dois objetos, você tem o seguinte método:

  • assertEquals(esperado, real)

Ele retornará verdadeiro se esperado.igual(real) retorna verdadeiro.

Afirmar matriz igual

Se você deseja testar a igualdade de arrays, você tem o seguinte método:

  • assertArrayEquals(esperado, real)

O método acima deve ser usado se os arrays tiverem o mesmo comprimento. Para cada valor válido de i, você pode verificá-lo conforme indicado abaixo:

  • assertEquals(expected[i], actual[i])
  • assertArrayEquals(expected[i], actual[i])

Mensagem de falha

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

  • falha(mensagem);

Você pode ter um método de asserção com um adicional Tanga parâmetro como primeiro parâmetro. Essa string será anexada à mensagem de falha caso a asserção falhe. Por exemplo, falha(mensagem) pode ser escrito como:

  • assertEquals(mensagem, esperado, real)

JUnit assertEquals

Você tem assertEquals(a, b), que se baseia na é 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 do objeto classe, ela obterá o comportamento padrão do é 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 assertEquals:

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

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

Asserções de ponto flutuante

Quando você deseja comparar tipos de ponto flutuante (por exemplo, duplo or flutuar), você precisa de um parâmetro adicional obrigatório, delta, para evitar problemas com erros de arredondamento ao realizar 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á algumas variáveis ​​e importantes instruções de asserção em JUnit.

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

Passo 1) Vamos criar uma classe que abranja todos os métodos importantes da 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 execução de testes 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 instruções assert uma a uma:

  1. assertEquals(string1, string2);

Agora compare string1="Junit" com string2="Junit" usando o método equals da classe Object. Substituindo o método assertEquals pelo método java.lang.Object.equals():

string1.equals(string2) => retorna verdadeiro

Portanto, 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”, ambos string3 e string4 são do mesmo tipo, portanto 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”, ambos string1 e string3 são de tipos diferentes, portanto 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 < variável2);

A funcionalidade “assertTrue()” serve para verificar se uma condição é verdadeira. Como variável1=1 e variável2=2, o que demonstra que a condição variável1 < variável2 é verdadeira, assertTrue(variável1 < variável2) retornará verdadeiro. verdadeiro.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

A funcionalidade “assertArrayEquals()” verifica se o array esperado e o array resultante são iguais. O tipo do array pode ser int, long, short, char, byte ou java.lang.Object. Como airethematicArrary1 = { 1, 2, 3 } e airethematicArrary2 = { 1, 2, 3 }, o que mostra que ambos os arrays são iguais, assertArrayEquals(airethematicArrary1, airethematicArrary2) retornará verdadeiro. verdadeiro.

Como todas as sete declarações assert do Junit4AssertionTest.java Se a classe retornar verdadeiro, ao executar o teste de asserção da classe, ele retornará um teste bem-sucedido (veja a saída abaixo).

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

JUnit Exemplo de afirmação

O resultado acima demonstra que o teste foi bem-sucedido, conforme esperado.

Perguntas Frequentes

Sim. Os assistentes de IA podem gerar asserções como `assertEquals`, `assertTrue` e outras a partir do comportamento esperado de um método. Mesmo assim, você deve revisar os valores esperados e os casos extremos para garantir que os testes sejam relevantes.

Sim. A IA pode sugerir o uso de `assertEquals` em vez de `assertSame` ou `assertArrayEquals`, dependendo do que você está comparando. Isso reduz erros comuns, como verificar referências quando a intenção era comparar valores.

`assertEquals` verifica a igualdade de valores usando o método `equals()`. `assertSame` verifica se duas referências apontam para o mesmo objeto na memória. Dois objetos com valores iguais podem falhar em `assertSame`.

Quando uma asserção falha, JUnit Lança um AssertionError, marca o teste como falho e reporta a mensagem opcional juntamente com os valores esperados e reais para ajudar na depuração do teste.

Resuma esta postagem com: