j'inaugure donc ce blog avec un article sur shunit2.
Comme son nom l'indique shunit2 est un utilitaire dans la lignée des XUnit, dont le but est d'écrire des tests unitaires pour un script shell.
Tout d'abord comment l'installer :
- Rendez-vous sur http://code.google.com/p/shunit2/downloads/list
- Téléchargez et décompressez le tgz
- Puis un petit make build devrait faire l'affaire
- Copier shunit2 depuis le répertoire build vers le répertoire de votre choix (/usr/bin par exemple)
Allons-y, étant de vrais barbus, on y va mais TDD !
Dans le fichier is_leap_test.sh :
testNeedsParameter()
{
STANDARD_OUT=`sh is_leap.sh`
assertEquals 2 $?
assertEquals "Usage : is_leap.sh YEAR" "$STANDARD_OUT"
}
. shunit2
Si vous exécuté ce script vous obtenez ceci :
#
# Performing tests
#
testNeedsParameter
sh: Can't open is_leap.sh
ASSERT:expected: <Usage: is_leap.sh YEAR> but was:<>
#
# Test report
#
tests passed: 1 50%
tests failed: 1 50%
tests skipped: 0 0%
tests total: 2 100%
La moitié des assertions ont échouées, le message d'erreur nous indique que la sortie standard ne contient pas le texte attendu. Par contre le script à bien retourné le code de sortie attendu... Ce qui veux dire que sh renvoi un code de sortie 2 lorsqu'il ne trouve pas le fichier à exécuter...
On note au passage que même si une assertion échoue, les tests restants ainsi que les assertions suivantes du même test sont quand même exécutés.
Passons donc au code de notre script :
#!/usr/bin
if [ $# -ne 1 ]; then
echo "Usage : $0 YEAR"
exit 2
fi
#
# Performing tests
#
testNeedsParameter
#
# Test report
#
tests passed: 2 100%
tests failed: 0 0%
tests skipped: 0 0%
tests total: 2 100%
Aucun commentaire:
Enregistrer un commentaire