Kotlin test

En la comunidad de typescript una de las razones por las que comentan que se debe usar es por que usa types y que eso reduce la introducción de errores en el codigo, y para ciertos errores muy muy simples puede que sea verdad. Pero si he notado que la mayoría de los errores vienen cuando modificamos algo y ese algo se usa en otro lado que no sabemos; e introducimos bugs al código, esto ni con lenguajes typados lo solventas. Pero si hay una herramienta que puede al menos decirte que estas provocando side effects en partes del código que ni esperabas. Y esas son las pruebas unitarias.

Todos deberíamos saber los beneficios que estas conllevan y aunque muchos los sabemos la verdad como desarrolladores no nos gusta escribirlas (al menos a mi no) las vemos como tiempo extra, ademas casi siempre los project managers tambien y piden las pruebas unitarias aunque no den tiempo para poder escribirlas.

Pero esa es otra historia y no importa si sigues una metodología BDD o TDD o simplemente escribes pruebas cuando se te antoja, es importante crearlas.

A continuation veremos un ejemplo de como crear pruebas unitarias para Kotlin:

El codigo a probar

El codigo al que le haremos pruebas unitarias sera el saludador que escribimos la vez pasada

 

Ahora bien, queremos verificar que la función saludador saluda para varias personas, funcionara así ?

La prueba unitaria

Para escribir la prueba vamos a necesitar 2 cosas, datos de prueba y nuestras esperanzas de que esos datos sean procesados adecuadamente.

En kotlin hay varias formas de escribir pruebas unitarias, entre ellas junit y la que veremos a continuación kotlintest

El coding es el siguiente:

 

Necesitamos agregar estas dependencias al archivo build.gradle

 

Y agregar esta sección en el mismo archivo

 

La prueba es bastante sencilla creamos una función con “Hola, “ y después creamos una tabla de datos, la primera columna sera la entrada y la segunda la salida esperada. Estoy imprimiendo la salida del saludo pero no es necesario, si falla lo sabremos.

Ejecutando la prueba

Desde IntelliJ solo damos click secudario en el archivo y damos run dará la siguiente salida:

 

Todo funciona bien y vemos que saluda a varias personas

Desde la consola solo debemos ejecutar gradle test --tests "main.MainTest” y la salida sera
 

Es curioso que si vuelves a ejecutar gradle esta es la salida:

 

Ya que nada cambio y por tanto no hay nada que reportar.

En conclusion hay que incrementar el uso de pruebas unitarias, por bien de todos (nosotros mismos, nuestros clientes y porque no, el planeta).