Ищите способ автоматизации тестирования приложения kshell - PullRequest
2 голосов
/ 29 июня 2009

Я унаследовал приложение-скрипт, представляющее собой комбинацию скриптов kshell, awk и java-программ. Я написал тесты JUnit для частей Java.

Есть ли хороший способ сделать что-то подобное для скриптов kshell и программ awk?

Я рассмотрел использование JUnit и System.exec () для вызова скриптов, но, похоже, должен быть лучший способ.

Ответы [ 3 ]

3 голосов
/ 30 июня 2009

Я нашел shUnit2 и попробую это.

Обновление с результатами опробования shUnit

shUnit работает как положено. Файлы сценариев пишутся с определенными тестовыми функциями, а затем с вызовом shUnit.

Пример:

#!/bin/sh
testFileCreated()
{
  TESTFILE=/tmp/testfile.txt
  # some code that creates the $TESTFILE
  assertTrue 'Test file missing' "[ -s '${TESTFILE}' ]"
}
# load shunit2
. /path/to/shUnit/shunit2-2.1.5/src/shell/shunit2

Результат

Ran 1 test.

OK

«OK» будет заменено на «FAILED», если файл не существует.

0 голосов
/ 27 июля 2009

Это не прямой ответ на ваш вопрос, но вы можете рассмотреть возможность использования простого Makefile для запуска сценариев bash с различными параметрами.

Например, напишите что-то вроде этого:

cat >Makefile

test_all: test1 test2 test3

test1:
    script1 -parameter1 -parameter2

test2: $(addprefix test2file_, $TESTFILES)
test2file_%:
    script2 -filename $*

test3:
    grep|awk|gawk|sed....

Вызывая «make test_all», вы автоматически запускаете все сценарии, и синтаксис не так сложен для изучения - вам просто нужно определить имя правила (test1, test_all ...) и команды, связанные с ним.

0 голосов
/ 23 июля 2009

Возможно, вы захотите попробовать Ожидайте . Он был разработан для автоматизации интерактивных программ. Конечно, Expect был написан поверх TCL, который является отвратительным языком сценариев. Таким образом, существуют интерфейсы для Python ( Pexpect ) и, возможно, других языков, более удобных для программистов. Но есть много документации для TCL / Expect, которая все еще полезна.

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