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.
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:
- assertTrue (condição)
- 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:
- assertNull(objeto)
- 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:
- assertSame(esperado, atual) — Retornará verdadeiro se esperado == real.
- 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:
- 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.
- 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.
- 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.
- 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 < 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.
- 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:
O resultado acima demonstra que o teste foi bem-sucedido, conforme esperado.


