Существует ли инфраструктура модульного тестирования для пакетных файлов Windows? - PullRequest
8 голосов
/ 07 июля 2011

Мне нужно что-то очень простое, например: «запустите эту команду и добейтесь успеха, если в выводе консоли есть« эта строка », иначе произойдет сбой».Есть ли такой инструмент?

Ответы [ 3 ]

5 голосов
/ 08 июля 2011

Не то, чтобы я знал, но вы можете легко написать один в другом пакетном скрипте.

call TestBatchScript.cmd > console_output.txt
findstr /C:"this string" console_output.txt

установит% errorlevel% в ноль, если строка найдена, и ненулевое, если строканет на месте.Затем вы можете проверить это с помощью IF ERRORLEVEL 1 goto :fail и выполнить любой код, который вы хотите после метки :fail.

Если вам нужна компактная оценка нескольких таких строк, вы можете использовать ||синтаксис:

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

Или, вы можете пойти еще дальше и прочитать список строк из файла

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
2 голосов
/ 15 июня 2016

Я использую следующие команды для filter type:

Для командного файла foo.cmd создайте следующие файлы:

foo.in.txt
привет

foo.expected.txt:
Привет, мир

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

Затем запустите foo.test.cmd

2 голосов
/ 25 сентября 2012

Я создал библиотеку для пакетного тестирования Windows. Это в настоящее время в зачаточном состоянии, но это работает, и я использую это.

Он называется cmdUnit и его можно загрузить с сайта проекта на bitbucket:

https://bitbucket.org/percipio/cmdunit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...