Протестируйте что-нибудь протокол в сценариях оболочки

Кто-нибудь видел, пытался реализовать или иным образом играть с TAP в оболочке? Мы стремимся создавать модульные тесты на многих языках (не заставляйте меня начинать с того, почему этого пока не существует), и так как у нас так много Perl-кода, мы будем смотреть на TAP (среди прочего, я представить). Я нашел библиотеку TAP для C, в Perl, конечно же, она встроена, и я даже нашел API для Java. Но не хватает одной области тестирования сценариев оболочки.

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

3 ответа

Решение

См. Список производителей TAP для списка библиотек. В этом списке вы найдете Tap-функции для шелл-кода.

  • Bats - это простое тестирование на Bash, тесты могут быть написаны в очень четком синтаксисе.
  • shUnit - самая старая оболочка для тестирования оболочки, немного документации.
  • shUnit2 - последний проект, вдохновленный shUnit, но совершенно другой. Тесты могут быть написаны более xUnit. Самое главное, это POSIX-совместимый.

Я обычно пишу свой собственный небольшой тестовый фреймворк для моих сценариев оболочки. Некоторые вещи следует помнить при этом:

  • При работе с файлами указывайте все пути относительно некоторой переменной, которую вы можете изменить в своих тестах.
  • diff(1) отлично подходит для проверки результатов теста (и для отображения полезного сообщения об ошибке для пользователя)
  • Используйте локальные переменные широко
  • Все должно быть в функции

Тем не менее, мой "тестовый фреймворк" в основном представляет собой набор функций оболочки test*) и runTests функция, которая вызывает их по одному. Ничего особенного, правда. Тесты создают рабочий каталог для теста, копируют в него все необходимые файлы, запускают функцию, проверяют результаты по проверенному набору файлов.

Другие вопросы по тегам