Najlepszym sposobem, aby przetestować narzędzia wiersza poleceń?

głosy
13

Mam dużą kolekcję narzędzi wiersza polecenia, które piszemy sami i używać wielokrotnie. W tej chwili ich testowanie jest bardzo kłopotliwe, a co za tym idzie nie zrobić jak najwięcej badań, jak my do niczego.

Zastanawiam się, czy ktoś może sugerować dobrych technik lub narzędzi robi dobrą robotę tego rodzaju rzeczy.

Edit: aby wyjaśnić to UNIX

Z góry dziękuję. Tomek

Utwórz 09/12/2008 o 16:46
źródło użytkownik
W innych językach...                            


9 odpowiedzi

głosy
4

Korzystanie Cram można napisać testy, które przypominają interaktywną sesję powłoki. Cram następnie odtworzyć polecenia z testu, porównaj wyjście do odniesienia i zgłosić różnice. Format testów jest dość elastyczny i pozwala dopasować wyjście użyciu Perl regex lub muszli-jak symbole wieloznaczne.

Odpowiedział 02/07/2015 o 19:34
źródło użytkownik

głosy
4

Aruba jest ogórek rozszerzenie do testowania aplikacji wiersza polecenia napisane w dowolnym języku programowania.

Aby z niego skorzystać, trzeba będzie rubin aby uruchomić testy, ale celem jest zapewnienie Aruba bibliotekę definicji predefiniowanych kroku tak, że nie trzeba pisać żadnego kodu Ruby, aby praktycznego zestawu testowego. (Chociaż w pewnym momencie prawdopodobnie będzie chciał napisać trochę ruby ​​zrobić kilka niestandardowych kroków).

Można zobaczyć wyrafinowany przykład badanego z Aruby tutaj narzędzia wiersza poleceń: jingweno / gh

Odpowiedział 28/02/2014 o 05:56
źródło użytkownik

głosy
4

Polecam strukturyzacji kodu Twojego narzędzie wiersza polecenia, tak że narzędzie wiersza polecenia jest klientem do biblioteki funkcji i / lub klas.

Zamiast po prostu za pomocą std :: cout wydrukować wyjście, posiada funkcję biblioteki wziąć odniesienie ostream że domyślnie std :: cout. Podczas testowania, zapewniają std :: stringstream do zbierania wyjście.

Wreszcie, po prostu porównać wyjścia Twój program narzędziowy jest z oczekiwanych rezultatów za pośrednictwem swojego ulubionego ramy testów jednostkowych.

(Przepraszam za konkretnym przykładzie C ++ ... Jestem pewien, że istnieją sposoby, aby robić podobne rzeczy w innych językach też).

Odpowiedział 10/12/2008 o 03:36
źródło użytkownik

głosy
3

powinno być możliwe, aby połączyć je ze skryptu powłoki (plik wsadowy, w systemach operacyjnych MS), przekierować dane wyjściowe do pliku, a następnie przeskanować plik programowo w celu zapewnienia, że ​​ma właściwą moc. Nie jestem świadom ramach testowania, który automatyzuje to dla ciebie, ale powinno być dość proste, aby ustawić go samemu.

Odpowiedział 09/12/2008 o 16:52
źródło użytkownik

głosy
2

Zrobiłem trochę to (loooong czas temu hehe), stosując się spodziewać , aby sprawdzić, co się stało, co ja, hmm, oczekuje

Odpowiedział 09/12/2008 o 17:02
źródło użytkownik

głosy
1

Nietoperze (Bash zautomatyzowany system Testing) przez Sama Stephensona. Jest malutki, napisany wyłącznie w skorupkach i ma ładny zestaw funkcji.

Wcześniej sugerowano Aruba wygląda interesująco, ale w niektórych przypadkach może to być spokojny overkill chodzi o zależnościach (rubin, ogórek)

Odpowiedział 17/04/2016 o 10:44
źródło użytkownik

głosy
0

I opracowali narzędzie „dokładnie” https://github.com/emilkarlen/exactly

Wykonuje rzeczy do przetestowania w tymczasowym katalogu piaskownicy. README zawiera szereg przykładów.

Test z hypotethical programu „klasyfikują-plików po ruchu do odpowiedniego-dir” może wyglądać następująco:

[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
Odpowiedział 27/03/2019 o 14:40
źródło użytkownik

głosy
0

Można użyć Perl z testu :: więcej biblioteki, która zapewnia wspaniałe ramy dla testowania CLIS. Choć przeznaczone głównie dla testów jednostkowych, można przedłużyć go przetestować przepływy pracy użytkownika.

Niektóre z tych metod:

 # 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);

Odpowiedział 15/01/2015 o 19:19
źródło użytkownik

głosy
0

Można to zrobić z hosta skryptów okna oder pliku wsadowego.

Ale obiecuję, aby użyć harmonogramu zadań podobnego ( http://www.splinterware.com/products/wincron.htm ) lub inny wolny / oprogramowania profesjonalnego.

Nie można łatwo kopiuj / wklej wiersza poleceń-parametry, które powinny różnić się w zależności, gdy chcesz przetestować oprogramowanie dla o wiele 100 razy ?!

Odpowiedział 09/12/2008 o 16:54
źródło użytkownik

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