Cómo hacer pruebas en el track de Pharo

Aprende a probar tus ejercicios de Pharo en Exercism


En su nivel más básico, Exercism gira por completo en torno a los tests y al testing, porque son los que impulsan tu implementación y te dicen cuándo un ejercicio está completo.

Retroalimentación inmediata

Pharo tiene un gran soporte para trabajar con tests, ¡y además permite hacer testing incremental! Puedes ejecutar cualquier test de un ejercicio haciendo clic en el orbe que está junto a una clase o un método de test.

Orbes de test en el navegador

Los orbes de test se colorean según el resultado de la última ejecución de tests:

  • verde cuando el test pasa
  • amarillo cuando falla una aserción
  • rojo cuando hay un error en tiempo de ejecución o una excepción

Tests ordenados

Los tests de los ejercicios de Exercism se han numerado a propósito para dar un orden de ejecución definido (por ejemplo, test01_verifySomeProperty, test02_verifyAnotherProperty, etc.).

Cuando estés trabajando en un ejercicio, te recomendamos hacer clic en el orbe del primer test, entender el fallo y lo que se necesita para que pase, y luego agregar el código a tu solución para lograrlo. En Pharo es bastante normal hacer estos cambios en el depurador, donde tienes acceso tanto al editor de código como a una vista de todas las variables y parámetros que te pueden ayudar a entender el problema.

NOTA: No es una práctica habitual etiquetar los tests con un prefijo de orden, y NO deberías hacerlo cuando escribas tests para tu propio proyecto.

Se puede ejecutar aunque esté roto

Pharo no tiene problema en ejecutarse con código que está roto, y el depurador simplemente se vuelve a abrir cuando se encuentra un error (ya sea un error de sintaxis, un valor incorrecto o incluso una clase o un método que no existen). Esta técnica fue una de las principales influencias para el desarrollo guiado por tests, y puedes darte una idea de este enfoque cuando intentes ejecutar el primer test de cualquier ejercicio. El depurador mostrará de inmediato que no se encuentra tu clase de solución (ya que todavía no has escrito nada). Por suerte, hay un botón «Create» que te ayuda a agregar la clase que falta y a seguir ejecutando hasta que termine o hasta que se encuentre otro error.

Cómo crear una clase en el depurador

Con tu primer test, luego te encuentras con un segundo error, ya que todavía no has escrito ningún método. De nuevo, el botón «Create» del depurador te permite definir uno y seguir ejecutando. En este punto también puedes hacer clic más abajo en la traza de la pila y revisar los requisitos del test que falla, y modificar tu nuevo método para que pase.

Enamórate del depurador

Más adelante en tu ciclo de desarrollo, también puede resultarte útil hacer clic más atrás en la pila y usar el botón «Restart» para reanudar la ejecución del programa en un punto anterior, y así poder recorrer tu programa paso a paso para ver qué está pasando. Esta es una forma importante y útil de entender por qué tu programa no funciona.

Además de ver las variables en el depurador, también puedes seleccionar cualquier sentencia y hacer clic en inspect/print para ver el resultado de evaluarla. Esto puede ser útil cuando quieres probar los resultados de un método, o para examinar el estado interno de un objeto.

Inspeccionar una sentencia

No olvides que también puedes hacer cambios en el código en vivo desde el depurador, y que guardar un cambio simplemente hará que la ejecución se reinicie en el método que acabas de guardar. Esto te permite experimentar con cambios y ver sus resultados mientras sigues «en el momento».

En resumen, no tengas miedo de usar el depurador en Pharo; lo consideramos una herramienta valiosa que ayuda a entender y experimentar con un problema.

Grupos de tests más grandes y automatización

Si alguna vez necesitas ejecutar grupos de tests más grandes, también puedes hacerlo desde el menú Package o usar la herramienta Test Runner (a la que accedes desde el menú World o escribiendo <meta> + OU).

También puedes ejecutar tests de forma programática desde el playground mediante print evaluating:

AllExercismTests suite run.

Si quieres aprender más sobre cómo funcionan los tests por dentro, puedes leer sobre SUnit o explorar el código en la jerarquía de TestCase.

¿Sabías que...? TDD se inventó en Smalltalk con la introducción de la biblioteca de tests SUnit