Test-First Programming ¿en Bash & Shell Scripting?

Hace unos días, me sorprendí notablemente cuando Jorge, mi compañero del Sudacas Team, me comentó que investigando sobre TDD, terminaba de encontrar un framework para Unit Testing en Bash y Shell Scripting.

Sin pérdidas de tiempo, inmediatamente fui a ver de que se trataba shUnit2, el framework para Test Unitarios en Bash y Shell Scripting.

Resulta que shUnit2 está basado en jUnit y entre otros Sistemas Operativos, soporta GNU/Linux, FreeBSD y OpenSolaris. Cabe destacar que posee una lista aceptable de asserts y soporta métodos setUp() y tearDown().

La última versión estable (al 22 de enero de 2012) es la 2.0.3 (que data de 2007) y a la fecha, se encuentra en desarrollo la versión 2.1.x. Lógicamente, se distribuye con licencia LGPL (Software Libre) y se encuentra perfectamente documentado y con sus FAQ correspondientes.

shUnit2 en Debian GNU/Linux

Se puede instalar mediante :~# aptitude install shunit2 u obtener el binario de la versión estable (.deb).

Guías, tutoriales y manuales de shUnit2

  • Shell Unit Testing by Maciej Bliziński | PDF

Un ejemplo simple

Un test simple sobre una función que suma dos números pasados como parámetros.

sumar_dos_numeros.sh (el archivo a testear)

#!/bin/bash

sumar_dos_numeros() {
    n1=$1
    n2=$2
    resultado=`expr $n1 + $n2`
    echo $resultado
}

sumar_dos_numeros_test.sh (el test)

#!/bin/bash

source sumar_dos_numeros.sh         # llamada al script a ser testeado

test_sumar_dos_numeros_con_5y2_esperando_7() {
    resultado=$(sumar_dos_numeros 5 2)  # llama a la función a testear
    assertEquals '7' $resultado         # comprueba el resultado (test)
}

source /usr/share/shunit2/shunit2  # llamada al framework

Al ejecutar sumar_dos_numeros_test.sh, correrá el Test, arrojando un resultado como el siguiente:

2 ideas sobre “Test-First Programming ¿en Bash & Shell Scripting?”

Los comentarios están cerrados.

Sentimos molestarte con lo de las Cookies, pero es por imperativo legal. Puedes ver aquí la Política de Cookies, si continúas navegando te informo que la estás aceptando ;)    Ver
Privacidad