5

有没有人在 shell 中看到、尝试实现或以其他方式玩过TAP ?我们正在寻找跨多种语言创建单元测试(不要让我开始解释为什么到目前为止还不存在),并且由于我们有这么多 Perl 代码,我们将研究 TAP(除其他外,我想象)。我找到了一个用于 C 的 TAP 库,Perl 当然是内置的,我什至还找到了一个用于 Java 的 API。但是缺少的一个领域是 shell 脚本测试。

并不是说我在单元测试 shell 脚本上发现了很多,但是因为我们确实有数千行 shell 代码,所以能够以某种方式对其进行测试会很好。

4

3 回答 3

9

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

于 2009-04-14T09:30:56.480 回答
5
  • Bats是一个简单的 Bash 唯一测试框架,可以用非常清晰的语法编写测试。
  • shUnit是最古老的 shell 测试框架,文档很少。
  • shUnit2是受 shUnit 启发的最新项目,但完全不同。测试可以用更 xUnit 的方式编写。最重要的是,它与 POSIX 兼容。
于 2012-12-23T08:44:03.933 回答
4

我通常为我的 shell 脚本编写自己的小型测试框架。执行此操作时要记住一些事项:

  • 处理文件时,使所有路径都相对于您可以在测试中修改的某个变量。
  • diff(1)非常适合验证测试结果(并向用户显示有用的错误消息)
  • 广泛使用局部变量
  • 一切都必须在一个函数中

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

于 2009-04-13T21:10:03.393 回答