Potrzebuję czegoś bardzo prostego, np. "Uruchom to polecenie i odnieś sukces, jeśli istnieje" ten ciąg "gdzieś w wynikach konsoli, w przeciwnym wypadku". Czy istnieje takie narzędzie?Czy istnieje struktura testów jednostkowych dla plików wsadowych systemu Windows?
Odpowiedz
Nie, że jestem świadomy, ale łatwo można napisać jeden w innym skrypcie.
call TestBatchScript.cmd > console_output.txt
findstr /C:"this string" console_output.txt
ustawi% errorlevel% na zero, jeśli łańcuch zostanie znaleziony, i niezerowe, jeśli ciąg znaków jest nieobecny. Możesz przetestować to za pomocą IF ERRORLEVEL 1 goto :fail
i wykonać dowolny kod, który chcesz po etykiecie :fail
.
Jeśli chcesz kompaktowy ocenę kilku takich ciągów, można użyć || składnia:
call TestBatchScript.cmd > console_output.txt
findstr /C:"teststring1" console_output.txt || goto :fail
findstr /C:"teststring2" console_output.txt || goto :fail
findstr /C:"teststring3" console_output.txt || goto :fail
findstr /C:"teststring4" console_output.txt || goto :fail
goto :eof
:fail
echo You Suck!
goto :eof
Można też pójść dalej i przeczytać listę ciągów z pliku
call TestBatchScript.cmd > console_output.txt
set success=1
for /f "tokens=*" %%a in (teststrings.txt) do findstr /C:"%%a" console_output.txt || call :fail %%a
if %success% NEQ 1 echo You Suck!
goto :eof
:fail
echo Didn't find string "%*"
set success=0
goto :eof
stworzyłem bibliotekę dla testów jednostkowych okna wsadowego. Obecnie jest w powijakach, ale działa i ja go używam.
Nazywa cmdUnit i można go pobrać ze strony projektu na bitbucket:
używam następujących do filter poleceń wpisz:
dla pliku wsadowego foo.cmd
utwórz następujący pliki:
foo.in.txt
:
witam
foo.expected.txt
:
hello world
foo.test.cmd
:
@echo off
echo Testing foo.cmd ^< foo.in.txt ^> foo.out.txt
call foo.cmd <foo.in.txt> foo.out.txt || exit /b 1
:: fc compares the output and the expected output files:
call fc foo.out.txt foo.expected.txt || exit /b 1
exit /b 0
Następnie uruchom foo.test.cmd
Zobacz także http://stackoverflow.com/questions/940497/how-to-do-tdd- i testowanie jednostek w powłoce – TrueWill