CodeGym /Blog Java /Random-ES /Afirmaciones de Java
John Squirrels
Nivel 41
San Francisco

Afirmaciones de Java

Publicado en el grupo Random-ES
La declaración de afirmación en Java se utiliza para probar ciertas suposiciones sobre el estado de un programa durante la ejecución. Esto ayuda a detectar errores fácilmente y depurar el programa. Una declaración de aserción en Java se escribe utilizando la palabra clave de aserción de Java seguida de una expresión booleana. Si la expresión se evalúa como verdadera, la afirmación pasa silenciosamente y el programa hace su trabajo. Si se evalúa como falso, la afirmación falla y se genera un AssertionError . Tengamos un ejemplo de un programa con aserciones de 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);
   }
}
Aquí la expresión es verdadera, por lo que el programa simplemente continúa con su trabajo. El resultado es tal como se esperaba:
5

Ejemplo de error de afirmación

En Java, un AssertionError es una subclase de la clase Error y se genera cuando falla una aserción. Las aserciones en Java se utilizan normalmente para comprobar que las condiciones previas, las condiciones posteriores o las invariantes sean verdaderas. Como dijimos a continuación, se genera un AssertionError cuando una declaración de aserción no se evalúa como verdadera. Ahora reescribamos nuestro programa para que la expresión booleana sea 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);
   }
}
Bueno, lo ejecutamos y el resultado es...
5
¡Definitivamente algo salió mal en nuestro ejemplo! Deberíamos tener un AssertionError aquí porque nuestra x es 5 y la afirmación espera que sea 7. ¿Qué hay de malo aquí? Es importante tener en cuenta que las aserciones de Java pueden simplemente deshabilitarse en la JVM, por lo que no deben usarse como el único medio de verificación de errores en un programa. Son útiles para depurar y probar, pero no se deben utilizar para el código de producción. Entonces, para usar aserciones, debe habilitarlas usando la opción vm -ea (o -enableassertions). Si está trabajando con la línea de comando, puede usar el siguiente comando para su programa AssertDemo1:
java -ea AssertDemo1
Si habilita las afirmaciones y vuelve a ejecutar el mismo programa, obtendrá lo siguiente:
Excepción en el hilo "principal" java.lang.AssertionError: x debería ser 7 en AssertDemo1.main(AssertDemo1.java:4)
Ese es el punto.

Cómo habilitar excepciones en IntelliJ IDEA

  1. Vaya al menú Ejecutar → Editar configuraciones....
  2. Ingrese el parámetro -ea en la línea Opciones de VM
Afirmaciones de Java - 1Ahora las afirmaciones están habilitadas y puedes usarlas.

Afirmaciones para pruebas unitarias en Java

En Java, las pruebas unitarias son una técnica que implica probar módulos de código individuales para asegurarse de que funcionen correctamente. Las aserciones se utilizan comúnmente en pruebas unitarias en Java para verificar que el código probado funciona como se esperaba. En las pruebas unitarias, una unidad de código, por ejemplo un método particular, se prueba de forma aislada para garantizar que funciona correctamente en diferentes condiciones y entradas. Pongamos un ejemplo. Aquí tenemos una calculadora sencilla para suma, resta, multiplicación y división de 2 números enteros.
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;
   }
}
Por supuesto, hay muchas preguntas sobre esta implementación (por ejemplo, qué sucede si sumamos el int más grande a otro número), pero por ahora dejaremos esta implementación como está. Ahora escribamos una clase en la que probaremos los métodos de la clase myMath con la ayuda de pruebas unitarias. Es cierto que sólo dos de ellos. De hecho, puede escribir pruebas que verifiquen la validez de los argumentos, si un método maneja casos especiales, etc. Pero aquí nos limitaremos a un par de pruebas con fines demostrativos.
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);
   }

}
El método afirmarEquals es una afirmación que comprueba si dos valores son iguales. Si los valores no son iguales, se generará un AssertionError , lo que indica que la prueba falló. El uso de aserciones en pruebas unitarias puede ayudarlo a detectar errores y garantizar que su código funcione correctamente en diferentes condiciones y entradas. Intente agregar usted mismo estas pruebas de división y multiplicación. No es difícil.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION