我继承了一个 shell 脚本应用程序,它是 kshell 脚本、awk 和 java 程序的组合。我已经为 java 部分编写了 JUnit 测试。
有没有一种对 kshell 脚本和 awk 程序执行类似操作的好方法?
我考虑过使用 JUnit 和 System.exec() 来调用脚本,但似乎应该有更好的方法。
我继承了一个 shell 脚本应用程序,它是 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...)和与之关联的命令。