【问题标题】:Looking for way to automate testing kshell app寻找自动化测试 kshell 应用程序的方法
【发布时间】:2009-06-29 14:46:21
【问题描述】:

我继承了一个 shell 脚本应用程序,它是 kshell 脚本、awk 和 java 程序的组合。我已经为 java 部分编写了 JUnit 测试。

对于 kshell 脚本和 awk 程序是否有类似的好方法?

我曾考虑使用 JUnit 和 System.exec() 来调用脚本,但似乎应该有更好的方法。

【问题讨论】:

    标签: shell awk automated-tests


    【解决方案1】:

    我找到了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”。

    【讨论】:

    • 我使用yum 安装了shunit2。我怎么知道它安装在哪里? which 和 locate 都找不到。
    【解决方案2】:

    您可能想试试Expect。它是为自动化交互式程序而设计的。当然,Expect 是在 TCL 之上编写的,这是一种可恶的脚本语言。所以有 Python (Pexpect) 的接口,也许还有其他对程序员更友好的语言。但是有很多关于 TCL/Expect 的文档仍然有用。

    【讨论】:

      【解决方案3】:

      这不是您问题的直接答案,但您可以考虑使用简单的 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...)和与之关联的命令。

      【讨论】:

        猜你喜欢
        • 2015-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多