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