GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unit-Tests für Shell-Skripte

UPDATE 01.03.2019:Ich bevorzuge jetzt Fledermäuse. Ich benutze es seit einigen Jahren für kleine Projekte. Ich mag die saubere, prägnante Syntax. Ich habe es nicht in CI/CD-Frameworks integriert, aber sein Exit-Status spiegelt den Gesamterfolg/-misserfolg der Suite wider, die besser ist als shunit2, wie unten beschrieben.

VORHERIGE ANTWORT:

Ich verwende shunit2 für Shell-Skripte, die sich auf eine Java/Ruby-Webanwendung in einer Linux-Umgebung beziehen. Es war einfach zu bedienen und keine große Abweichung von anderen xUnit-Frameworks.

Ich habe die Integration mit CruiseControl oder Hudson/Jenkins nicht versucht, aber bei der Implementierung der kontinuierlichen Integration auf andere Weise bin ich auf diese Probleme gestoßen:

  • Ausgangsstatus:Wenn eine Testsuite fehlschlägt, verwendet shunit2 keinen Ausgangsstatus ungleich Null, um den Fehler zu kommunizieren. Sie müssen also entweder die shunit2-Ausgabe parsen, um Pass/Fail einer Suite zu bestimmen, oder shunit2 so ändern, dass es sich so verhält, wie es einige Continuous-Integration-Frameworks erwarten, indem Pass/Fail über den Exit-Status mitgeteilt wird.
  • XML-Protokolle:shunit2 erzeugt kein XML-Protokoll der Ergebnisse im JUnit-Stil.

Ich frage mich, warum niemand Fledermäuse erwähnt hat. Es ist aktuell und TAP-konform.

Beschreiben:

#!/usr/bin/env bats

@test "addition using bc" {
  result="$(echo 2+2 | bc)"
  [ "$result" -eq 4 ]
}

Ausführen:

$ bats addition.bats
 ✓ addition using bc

1 tests, 0 failures

Linux
  1. Was ein Shell-Dotfile für Sie tun kann

  2. Verwenden von Bash für die Automatisierung

  3. Setuid für Shell-Skripte zulassen?

  4. Benötigen Sie eine Shell für SCP?

  5. Wie testet man die Posix-Konformität von Shell-Skripten?

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

Dateierweiterungen für Unix-Shell-Skripte?

Arrays in Shell-Skripten

Wie verwende ich if-else in Shell-Skripten?

Die for-Schleife in Shell-Skripten verstehen

Die While-Schleife in Shell-Skripten