Можно ли выполнить модульное тестирование или подтвердить результат файла CMD / Batch? - PullRequest
0 голосов
/ 24 августа 2011

Я написал блок кода, который должен распаковать сжатые файлы .cmd и запустить их.

Я бы хотел протестировать его. До сих пор для теста я создал очень простой cmd-файл («echo hello world»), сохранил его, сжал его и обработал с моим кодом. Я могу убедиться, что это работает, потому что если я заменю «echo hello world» на «pause», появится командное окно с командой pause. Но это явно не автоматизировано.

Можно ли как-нибудь автоматизировать этот тест, чтобы он что-то утверждал? Запуск другой команды DOS, например?

Ура, Matt

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Измените пакетный файл на echo Whatever > %temp%\MyResult.txt, затем проверьте, что файл существует и имеет правильное содержимое.
(И удалите файл как до, так и после)

0 голосов
/ 24 августа 2011

По сути, вы можете просто выполнить существующий пакетный файл "echo hello world" и проверить код завершения процесса.

В соответствии с соглашением код завершения 0 означает, что команда (или пакетный файл в вашем случае) выполнена успешно.

Если ваш пакетный файл действителен (т.е. правильно разархивирован), существует (т.е. правильнораспаковывается в ожидаемое место), не принудительно заставляет код выхода не равный 0 (например, через exit /b 1 или через неверный синтаксис и т. д.), код выхода всегда будет равен 0.

В псевдокоде вашего тестаможет выглядеть так:

void Test()
{
    int rc = UnzipAndExecuteBatch();

    Assert.AreEqual(0, rc);
}

Где UnzipAndExecuteBatch () будет вашим реальным кодом, который вы хотите протестировать.Возможно, изменен, поэтому возвращает код завершения cmd.exe.

...