Der beste Weg, Kommandozeilen-Tools zu testen?

stimmen
13

Ich habe eine große Sammlung von Werkzeugen Befehlszeile, die wir schreiben uns und häufig verwenden. Im Moment sich die Prüfung ist sehr umständlich und daher tun wir nicht so viel getestet wie wir Aught zu.

Ich frage mich, ob jemand gute Techniken und Werkzeuge für einen guten Job macht von dieser Art der Sache vorschlagen kann.

Edit: zu klären, ist das UNIX

Danke im Voraus. Tom

Veröffentlicht am 09/12/2008 um 16:46
quelle vom benutzer
In anderen Sprachen...                            


9 antworten

stimmen
3

Sie sollten sie von einem Shell-Skript aufrufen (Batch-Datei, auf MS-Betriebssysteme) können, leiten Sie die Ausgabe in eine Datei, dann scannen Sie die Datei programmatisch um sicherzustellen, dass es die richtige Ausgabe hat. Ich bin mir nicht bewusst ein Test-Framework, die dies für Sie automatisiert, aber es sollte ziemlich einfach sein, um es einzurichten selbst.

Beantwortet am 09/12/2008 um 16:52
quelle vom benutzer

stimmen
0

Sie können oder Windows Scripting Host aus einer Batch-Datei tun.

Aber ich verspreche , einen Taskplaner zu verwenden wie ( http://www.splinterware.com/products/wincron.htm ) oder andere freie / professionelle Software.

Dort können Sie einfach copy / paste die Kommandozeilen-Parameter, die Sie verändern sollten, wenn Sie für etwa viele 100-mal testen Sie Ihre Software wollen ?!

Beantwortet am 09/12/2008 um 16:54
quelle vom benutzer

stimmen
2

Ich habe ein wenig von diesem (benötigt sehr viel Zeit vor hehe) mit Erwarten Sie, dass zu überprüfen , was geschehen war , was ich, umm, erwartet

Beantwortet am 09/12/2008 um 17:02
quelle vom benutzer

stimmen
4

Ich empfehle Strukturierung Ihres Kommandozeilen-Tool des Code, so dass das Kommandozeilenprogramm ein Client auf eine Bibliothek von Funktionen und / oder Klassen ist.

Anstatt einfach std :: cout mit Ausgabe zu drucken, haben die Bibliotheken-Funktion einen ostream Bezug nehmen, dass standardmäßig auf std :: cout. Wenn Sie testen, bieten eine std :: string die Ausgabe zu sammeln.

Schließlich müssen Sie nur Ihre Nützlichkeit der Ausgabe mit den erwarteten Ergebnissen vergleichen Sie Ihre Lieblings-Unit-Test-Framework.

(Ich entschuldige mich für die C ++ spezifisches Beispiel ... Ich bin sicher, es gibt Möglichkeiten, auch ähnliche Dinge in anderen Sprachen zu tun).

Beantwortet am 10/12/2008 um 03:36
quelle vom benutzer

stimmen
4

Aruba ist eine Cucumber Erweiterung für in einer beliebigen Programmiersprache geschrieben Befehlszeile Anwendungen zu testen.

Um es zu nutzen, werden Sie ruby ​​müssen die Tests laufen, aber der Zweck des artus ist eine Bibliothek mit vordefinierten Schritt Begriffen zu definieren, so dass Sie keinen Ruby-Code schreiben müssen, um eine praktikable Testsuite zu machen. (Obwohl Sie wahrscheinlich irgendwann wollen ein wenig von Ruby zu schreiben, um ein paar eigenen Schritte zu machen.)

Sie können ein anspruchsvolleres Beispiel eines Kommandozeilen - Tool mit aruba hier getestet siehe: jingweno / gh

Beantwortet am 28/02/2014 um 05:56
quelle vom benutzer

stimmen
0

Sie könnten Perl mit verwenden Test :: mehr Bibliothek, die zum Testen CLIs einen großen Rahmen bietet. Obwohl in erster Linie für Unit - Tests entwickelt, könnten erweitern Sie es Benutzer Workflows zu testen.

Einige der Methoden:

 # Various ways to say "ok"
  ok($got eq $expected, $test_name);
  is  ($got, $expected, $test_name);
  isnt($got, $expected, $test_name);

  # Rather than print STDERR "# here's what went wrong\n"
  diag("here's what went wrong");

  like  ($got, qr/expected/, $test_name);
  unlike($got, qr/expected/, $test_name);

  cmp_ok($got, '==', $expected, $test_name);

Beantwortet am 15/01/2015 um 19:19
quelle vom benutzer

stimmen
4

Mit Cram können Sie Tests schreiben , die eine interaktive Shell - Sitzung ähneln. Cram dann wiederholen Befehle aus dem Test, vergleicht Ausgang mit der Referenz und berichten Unterschiede. Tests Format ist sehr flexibel und ermöglicht es Ihnen , Ausgabe mit Perl regex oder schalenartige Platzhalter passen.

Beantwortet am 02/07/2015 um 19:34
quelle vom benutzer

stimmen
1

Fledermäuse (Bash Automatisiertes Testing System) von Sam Stephenson. Es ist winzig, geschrieben rein in Schale und hat einen schönen Satz von Funktionen.

Zuvor schlug Aruba sieht interessant aus, aber in manchen Fällen kann es ruhig sein, eine übertrieben in Bezug auf Abhängigkeiten (Rubin, Gurke)

Beantwortet am 17/04/2016 um 10:44
quelle vom benutzer

stimmen
0

Ich habe ein Werkzeug „Genau“ entwickelt https://github.com/emilkarlen/exactly

Es führt die Sache in einem temporären Sandbox-Verzeichnis zu testen. Die Infodatei enthält eine Reihe von Beispielen.

Ein Test eines hypotethical Programm "einstufen-files-by-moving-to-geeignet-dir" kann wie folgt aussehen:

[setup]

dir input
dir output/good
dir output/bad

file input/a.txt = <<EOF
GOOD contents
EOF

file input/b.txt = <<EOF
bad contents
EOF

[act]

classify-files-by-moving-to-appropriate-dir GOOD input/ output/

[assert]

dir-contents input empty

exists output/good/a.txt : type file
dir-contents output/good num-files == 1

exists output/bad/b.txt : type file
dir-contents output/bad num-files == 1
Beantwortet am 27/03/2019 um 14:40
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more