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?”
Vaya bueno Eugenia, mejor comienzo no podías tener, por cierto, te mando recuerdos de un colega (wakaru) que está ahora conmigo y vio tu conferencia en Chile, dice que eres una crack -;)
Abrazos !!
OMFG! ¿No será demasiado lo de crack? :$