在Shell脚本中测试任何协议

时间:2009-04-13 20:29:25

标签: unit-testing shell tap

有没有人在shell中看到,试图实现或以其他方式使用TAP?我们正在寻找跨多种语言创建单元测试(不要让我开始为什么到目前为止还不存在),并且因为我们有很多Perl代码,所以我们将关注TAP(其中包括想像)。我找到了一个用于C的TAP库,Perl当然是内置的,我甚至找到了一个Java的API。但缺少的一个领域是shell脚本测试。

不是我在单元测试shell脚本上找到了很多,但是因为我们确实有数千行shell代码,所以能够以某种方式测试它会很好。

3 个答案:

答案 0 :(得分:9)

有关库列表,请参阅TAP Producers列表。在该列表中,您将找到Tap-functions的shell代码。

答案 1 :(得分:4)

我经常为我的shell脚本编写自己的小测试框架。这样做时要记住的一些事情:

  • 使用文件时,请将所有路径设置为可在测试中修改的某个变量。
  • diff(1)非常适合验证测试结果(并向用户显示有用的错误消息)
  • 广泛使用局部变量
  • 一切都必须在功能中

也就是说,我的“测试框架”主要是一组shell函数(名为test*)和一个runTests函数,它们逐个调用它们。没什么特别的,真的。测试为测试创建一个工作目录,将所有必要的文件复制到其中,运行一个函数,根据一组知识好的文件验证结果。

答案 2 :(得分:4)

  • Bats是简单的Bash只测试框架,测试可以用非常清晰的语法编写。
  • shUnit是最古老的shell测试框架,文档很少。
  • shUnit2是受shUnit启发的最新项目,但完全不同。测试可以用更多xUnit方式编写。最重要的是,它与POSIX兼容。