kshellスクリプト、awk、およびjavaプログラムを組み合わせたシェルスクリプトアプリケーションを継承しました。私はJavaピースのJUnitテストを作成しました。
kshellスクリプトとawkプログラムに似たようなことをする良い方法はありますか?
JUnitとSystem.exec()を使用してスクリプトを呼び出すことを検討しましたが、もっと良い方法があるはずです。
kshellスクリプト、awk、およびjavaプログラムを組み合わせたシェルスクリプトアプリケーションを継承しました。私はJavaピースのJUnitテストを作成しました。
kshellスクリプトとawkプログラムに似たようなことをする良い方法はありますか?
JUnitとSystem.exec()を使用してスクリプトを呼び出すことを検討しましたが、もっと良い方法があるはずです。
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」に置き換えられます。
これはあなたの質問に対する直接の答えではありませんが、単純な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 ...)とそれに関連付けられたコマンドを定義するだけです。