2009-06-29 3 views
2

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

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

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

ответ

3

Я нашел 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 

'ОК' будет заменено на 'FAILED', если файл не существует.

+0

Я установил 'shunit2', используя' yum'. Как я могу определить, где он установлен? Ни то, ни другое не может найти его. – Leonid

0

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

0

Это не прямой ответ на ваш вопрос, но вы можете использовать простой 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.... 

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

Смежные вопросы