Протокол Test Anything в сценариях оболочки

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

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

Ответ 1

Для получения списка библиотек см. список TAP Producers. В этом списке вы найдете Tap-functions для кода оболочки.

Ответ 2

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

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

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

Ответ 3

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