Ir al contenido principal

Cómo leer la salida de las pruebas en Java

Para entender la salida de las pruebas, primero es importante explicar cómo funcionan las pruebas en la plataforma.

⚙️La prueba de código en Java se realiza utilizando el framework JUnit, y las pruebas en sí están escritas en Java. La verificación del código se realiza automáticamente al hacer clic en el botón «Comprobar». El programa en prueba se compila y verifica con diferentes datos de entrada, mientras que las pruebas aseguran que el comportamiento del programa sea el esperado.

Cuando las pruebas se completan, el resultado de la verificación aparece en la pestaña «OUTPUT». Si hay algún error en esta etapa, es necesario leer la salida de las pruebas. Esta salida es nuestra principal herramienta para depurar el código.

Tipos de errores

Nadie escribe código de manera perfecta. Por lo tanto, tarde o temprano te enfrentarás a errores. Los errores durante la ejecución del ejercicio se pueden dividir condicionalmente en tres tipos:

  • Errores de compilación: son errores sintácticos que surgen durante la compilación del programa.
  • Errores de tiempo de ejecución: estos errores no afectan la compilación, pero impiden la ejecución normal del programa.
  • Errores de aserción: errores causados por las pruebas. Ocurren si el resultado de la función no coincide con el resultado esperado.

⛔ Errores de compilación

Como su nombre indica, estos errores ocurren durante la compilación y evitan una compilación exitosa del código. Surgen debido a varios errores en el propio código.

Ejemplos de este tipo de errores incluyen:

  • Error de sintaxis: un punto y coma faltante, un paréntesis no cerrado;
  • Referencia a una variable inexistente;
  • Uso incorrecto de tipos de datos.

Si el programa Java está escrito de manera sintácticamente incorrecta, el compilador mostrará un mensaje de error en la pantalla. Este mensaje se ve así:

code1.png

El mensaje de error contiene:

  • Una descripción del error;
  • La indicación del archivo donde ocurrió el error;
  • El número de línea en el archivo donde ocurrió el error.

⛔ Errores de tiempo de ejecución

Estos errores no impiden la compilación, pero el programa no funciona como se espera. Estos problemas surgen durante la ejecución del programa compilado. Ocurren diversas excepciones que interrumpen el flujo normal de ejecución del programa. Estos errores no están relacionados con las pruebas y señalan un problema en el código.

En Java, hay muchas excepciones, pero no es necesario conocerlas todas. Por lo general, el nombre de la excepción generada y el mensaje de error explican claramente cuál es el problema. Por ejemplo, al dividir por cero, se producirá la excepción ArithmeticException con el mensaje de que no se puede dividir por cero en Java.

Además, en el mensaje de error se puede encontrar el archivo y el número de línea donde ocurrió la excepción:

code6.png

No hay que temer a las excepciones. Es suficiente leer el mensaje y comprender lo que Java está indicando. Si la descripción no es suficiente, siempre se puede recurrir a la documentación, donde se describen los casos de aparición de varias excepciones.

⛔ Errores de aserción

Estos errores ocurren si el resultado de la función no coincide con el resultado esperado.

Para entender cómo se ven las pruebas para los ejercicios, primero veamos las pruebas:

code3.png

El método bajo prueba se llama en las pruebas con parámetros específicos. El resultado de este método se compara con un resultado esperado predefinido.

Si el resultado real y el esperado coinciden, entonces todo está bien y las pruebas se pasan. Pero si los valores no coinciden, se produce un AssertionFailedError. Examinemos más de cerca la salida en la pestaña «OUTPUT» en caso de que las pruebas fallen:

code3.png

Aquí vemos:

  • El nombre de la clase de pruebas: AppTest
  • El nombre de la prueba que falló: testTruncate()
  • El resultado esperado del trabajo en la línea expected
  • El resultado real del trabajo del código en la línea but was 

Al estudiar esta salida, podemos entender la causa del desacuerdo en los resultados. Esto ayudará a abordar la razón del mal funcionamiento del código bajo prueba.

Depuración de código

A veces, a primera vista, es imposible entender la causa del comportamiento incorrecto del código. En ese caso, la depuración viene al rescate: la posibilidad de echar un vistazo al proceso de ejecución del código.

Hay varias formas, pero examinaremos la más simple y común: la impresión de depuración.

La impresión de depuración implica mostrar en la pantalla los valores de las variables, llamadas a funciones, mensajes de ejecución de bucles durante la ejecución del programa. Para esto, simplemente agrega una llamada a System.out.println() con el valor de interés.

code4.png

Luego, simplemente vuelve a ejecutar la comprobación de las pruebas para ver los resultados de nuestra impresión de depuración en la pestaña «OUTPUT»:

code5.png

Esto facilita el seguimiento del proceso de ejecución del programa y, por lo tanto, identificar dónde se ha introducido un error se vuelve mucho más sencillo.