Question

Je hérité d'une application shell-script qui est une combinaison de kshell scripts, awk et les programmes java. Je l'ai écrit tests JUnit pour les pièces de java.

Y at-il un bon moyen de faire quelque chose de similaire pour les scripts kshell et des programmes awk?

Je l'ai envisagé d'utiliser pour appeler les scripts, mais il semble qu'il devrait y avoir une meilleure façon JUnit et System.exec ().

Était-ce utile?

La solution

J'ai trouvé shunit2 et va essayer.

Mise à jour des résultats d'essayer shUnit

shUnit fonctionne comme prévu. Les fichiers de script sont écrits avec des fonctions de test définies, puis un appel à shUnit.

Exemple:

#!/bin/sh
testFileCreated()
{
  TESTFILE=/tmp/testfile.txt
  # some code that creates the $TESTFILE
  assertTrue 'Test file missing' "[ -s '${TESTFILE}' ]"
}
# load shunit2
. /path/to/shUnit/shunit2-2.1.5/src/shell/shunit2

Résultat

Ran 1 test.

OK

Le « OK » serait remplacé par « failed » si le fichier n'existait pas.

Autres conseils

Vous pouvez essayer Attendez-vous. Il a été conçu pour l'automatisation des programmes interactifs. Bien sûr Attendez-vous a été écrit sur le dessus de TCL, qui est un langage de script abominable. Donc, il y a des interfaces pour Python ( pexpect ) et peut-être d'autres langues qui sont plus programmeur amical. Mais il y a beaucoup de documents autour de la pose pour TCL / expect qui est toujours utile.

Ce n'est pas une réponse directe à votre question, mais vous pouvez envisager d'utiliser un Makefile simple pour exécuter des scripts bash avec des paramètres différents.

Par exemple, écrire quelque chose comme ceci:

cat >Makefile

test_all: test1 test2 test3

test1:
    script1 -parameter1 -parameter2

test2: $(addprefix test2file_, $TESTFILES)
test2file_%:
    script2 -filename $*

test3:
    grep|awk|gawk|sed....

En appelant « faire test_all » vous exécuter tous les scripts automatiquement, et la syntaxe n'est pas si difficile à apprendre - il vous suffit de définir un nom de règle (test1, test_all ...) et les commandes qui lui sont associées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top