Протестируйте что-нибудь протокол в сценариях оболочки
Кто-нибудь видел, пытался реализовать или иным образом играть с TAP в оболочке? Мы стремимся создавать модульные тесты на многих языках (не заставляйте меня начинать с того, почему этого пока не существует), и так как у нас так много Perl-кода, мы будем смотреть на TAP (среди прочего, я представить). Я нашел библиотеку TAP для C, в Perl, конечно же, она встроена, и я даже нашел API для Java. Но не хватает одной области тестирования сценариев оболочки.
Не то чтобы я также нашел много информации о скриптах оболочки для модульного тестирования, но, поскольку у нас есть тысячи строк кода, было бы неплохо как-то протестировать его.
3 ответа
См. Список производителей TAP для списка библиотек. В этом списке вы найдете Tap-функции для шелл-кода.
- Bats - это простое тестирование на Bash, тесты могут быть написаны в очень четком синтаксисе.
- shUnit - самая старая оболочка для тестирования оболочки, немного документации.
- shUnit2 - последний проект, вдохновленный shUnit, но совершенно другой. Тесты могут быть написаны более xUnit. Самое главное, это POSIX-совместимый.
Я обычно пишу свой собственный небольшой тестовый фреймворк для моих сценариев оболочки. Некоторые вещи следует помнить при этом:
- При работе с файлами указывайте все пути относительно некоторой переменной, которую вы можете изменить в своих тестах.
diff(1)
отлично подходит для проверки результатов теста (и для отображения полезного сообщения об ошибке для пользователя)- Используйте локальные переменные широко
- Все должно быть в функции
Тем не менее, мой "тестовый фреймворк" в основном представляет собой набор функций оболочки test*
) и runTests
функция, которая вызывает их по одному. Ничего особенного, правда. Тесты создают рабочий каталог для теста, копируют в него все необходимые файлы, запускают функцию, проверяют результаты по проверенному набору файлов.