2

kshellスクリプト、awk、およびjavaプログラムを組み合わせたシェルスクリプトアプリケーションを継承しました。私はJavaピースのJUnitテストを作成しました。

kshellスクリプトとawkプログラムに似たようなことをする良い方法はありますか?

JUnitとSystem.exec()を使用してスクリプトを呼び出すことを検討しましたが、もっと良い方法があるはずです。

4

3 に答える 3

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」に置き換えられます。

于 2009-06-29T22:15:04.527 に答える
0

あなたはExpectを試してみたいかもしれません。インタラクティブプログラムを自動化するために設計されました。もちろん、Expectは、忌まわしいスクリプト言語であるTCLの上に書かれています。そのため、Python(Pexpect)や、おそらくプログラマーにとってより使いやすい他の言語用のインターフェースがあります。しかし、TCL / Expectには、まだ役立つドキュメントがたくさんあります。

于 2009-07-22T23:05:18.103 に答える
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....

'make test_all'を呼び出すと、すべてのスクリプトが自動的に実行され、構文を学ぶのはそれほど難しくありません。ルール名(test1、test_all ...)とそれに関連付けられたコマンドを定義するだけです。

于 2009-07-27T12:37:54.303 に答える