CodeGym /Blogue Java /Random-PT /Asserções Java
John Squirrels
Nível 41
San Francisco

Asserções Java

Publicado no grupo Random-PT
A instrução Assert em Java é usada para testar certas suposições sobre o estado de um programa durante a execução. Isso ajuda a detectar erros facilmente e depurar o programa. Uma instrução de asserção em Java é escrita usando a palavra-chave Java assert seguida por uma expressão booleana. Se a expressão for avaliada como verdadeira, a asserção passa silenciosamente e o programa faz seu trabalho. Se for avaliado como falso, a asserção falha e um AssertionError é lançado. Vejamos um exemplo de programa com asserções Java.
//Assertion in Java example
public class AssertDemo1 {
   public static void main(String[] args) {
       int x = 5;
       assert x == 5 : "x should be 5";
       System.out.println(x);
   }
}
Aqui a expressão é verdadeira, então o programa apenas continua seu trabalho. A saída é exatamente como esperado:
5

Exemplo de AssertionError

Em Java, um AssertionError é uma subclasse da classe Error e é lançado quando uma asserção falha. Asserções em Java são normalmente usadas para verificar se pré-condições, pós-condições ou invariantes são verdadeiras. Como dissemos abaixo, um AssertionError é lançado quando uma declaração de asserção não é avaliada como verdadeira. Agora vamos reescrever nosso programa para que a expressão booleana seja falsa.
//AssertionError example
public class AssertDemo1 {
   public static void main(String[] args) {
       int x = 5;
       assert x == 7 : "x should be 7";
       //here should be AssertionError
       System.out.println(x);
   }
}
Bem, nós o executamos e o resultado é…
5
Definitivamente, algo deu errado em nosso exemplo! Deveríamos ter um AssertionError aqui porque nosso x é 5 e a afirmação espera que seja 7. O que há de errado aqui? É importante observar que as asserções Java podem ser simplesmente desabilitadas na JVM, portanto não devem ser usadas como o único meio de verificação de erros em um programa. Eles são úteis para depuração e teste, mas não devem ser usados ​​para código de produção. Portanto, para usar asserções, você precisa habilitá-las usando a opção vm -ea (ou -enableassertions). Se você estiver trabalhando com linha de comando, você pode usar o próximo comando para o seu programa AssertDemo1:
java -ea AssertDemo1
se você ativar as asserções e executar novamente o mesmo programa, obterá o seguinte:
Exceção no thread "main" java.lang.AssertionError: x deve ser 7 em AssertDemo1.main(AssertDemo1.java:4)
Essa é a questão.

Como habilitar exceções no IntelliJ IDEA

  1. Vá para o menu Executar → Editar configurações....
  2. Insira o parâmetro -ea na linha VM options
Asserções Java - 1Agora as asserções estão habilitadas e você pode usá-las.

Asserções para testes unitários em Java

Em Java, o teste de unidade é uma técnica que envolve testar módulos individuais de código para garantir que funcionem corretamente. Asserções são comumente usadas em testes unitários em Java para verificar se o código testado está funcionando conforme o esperado. No teste unitário, uma unidade de código, por exemplo, um método específico, é testada isoladamente para garantir que funcione corretamente sob diferentes condições e entradas. Vamos dar um exemplo. Aqui temos uma calculadora simples para adição, subtração, multiplicação e divisão de 2 números inteiros.
public class MyMath {

   public static int add (int a, int b) {
       return a + b;
   }

   public static int sub (int a, int b) {
       return a - b;
   }

   public static int mult (int a, int b) {
       return a*b;
   }

   public static double div (int a, int b) {
       return a/b;
   }
}
Claro, há muitas dúvidas sobre esta implementação (por exemplo, o que acontece se adicionarmos o maior int a outro número), mas por enquanto deixaremos esta implementação como está. Agora vamos escrever uma classe na qual testaremos os métodos da classe myMath com a ajuda de testes unitários. É verdade, apenas dois deles. Na verdade, você pode escrever testes que verificam a validade dos argumentos, se um método lida com casos especiais e assim por diante. Mas aqui nos limitaremos a apenas alguns testes para fins de demonstração.
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class MyMathTesting {
   @Test
   public void testAdd() {
       MyMath calculator = new MyMath();
       int sum = calculator.add(2, 3);
       assertEquals(5, sum);
   }

   @Test
   public void testSub() {
       MyMath calculator = new MyMath();
       int sub = calculator.sub(5, 2);
       assertEquals(3, sub);
   }

}
O método assertEquals é uma afirmação que verifica se dois valores são iguais. Se os valores não forem iguais, um AssertionError será lançado, indicando que o teste falhou. Usar asserções em testes unitários pode ajudá-lo a detectar bugs e garantir que seu código esteja funcionando corretamente sob diferentes condições e entradas. Tente você mesmo adicionar esses testes para divisão e multiplicação. Não é difícil.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION