2009-06-29 2 views
2

kshellスクリプト、awk、javaプログラムの組み合わせであるシェルスクリプトアプリケーションを継承しました。私はJavaの部分のJUnitテストを書いています。kshell appのテストを自動化する方法を探しています

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 

'OK' ファイルが存在しなかった場合は、 'FAILED' で置き換えられます。

+0

'shunit2'を' yum'でインストールしました。どのようにインストールされているのかわかりますか?どちらもそれを見つけることができない。 – Leonid

0

Expectを試してみるとよいでしょう。インタラクティブなプログラムを自動化するために設計されています。もちろん、ExpectはTCLの上に書かれました.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」あなたは、自動的にすべてのスクリプトを実行し、構文が学ぶことはそれほど難しいことではない - あなただけのルールを定義する必要がありますname(test1、test_all ...)とそれに関連するコマンド。