Unit testing 在Shell脚本中测试任何协议

Unit testing 在Shell脚本中测试任何协议,unit-testing,shell,tap,Unit Testing,Shell,Tap,有人在shell中见过、尝试过实现或玩过吗?我们希望创建跨多种语言的单元测试(不要让我开始解释为什么到目前为止还不存在这种测试),因为我们有这么多Perl代码,所以我们将关注TAP(我想还有其他一些)。我发现了一个用于C的TAP库,当然,Perl内置了它,我甚至还发现了一个用于Java的API。但缺少的一个方面是shell脚本测试 我也没有在单元测试shell脚本方面找到太多东西,但是因为我们有数千行shell代码,所以能够以某种方式对其进行测试是很好的。我通常为我的shell脚本编写自己的小测

有人在shell中见过、尝试过实现或玩过吗?我们希望创建跨多种语言的单元测试(不要让我开始解释为什么到目前为止还不存在这种测试),因为我们有这么多Perl代码,所以我们将关注TAP(我想还有其他一些)。我发现了一个用于C的TAP库,当然,Perl内置了它,我甚至还发现了一个用于Java的API。但缺少的一个方面是shell脚本测试


我也没有在单元测试shell脚本方面找到太多东西,但是因为我们有数千行shell代码,所以能够以某种方式对其进行测试是很好的。

我通常为我的shell脚本编写自己的小测试框架。进行此操作时,请记住以下几点:

  • 使用文件时,使所有路径都与可以在测试中修改的某个变量相关
  • diff(1)
    非常适合验证测试结果(并向用户显示有用的错误消息)
  • 广泛使用局部变量
  • 一切都必须在一个函数中
也就是说,我的“测试框架”主要是一组shell函数(名为
test*
)和一个
runTests
函数,它们逐个调用它们。没什么特别的,真的。测试为测试创建一个工作目录,将所有必要的文件复制到其中,运行一个函数,根据已知的一组文件验证结果。

有关库的列表,请参阅的列表。您将在该列表中找到外壳代码。

  • 是一个简单的Bash测试框架,测试可以用非常清晰的语法编写
  • 是最古老的shell测试框架,文档很少
  • 这是一个最近的项目,灵感来自shUnit,但完全不同。测试可以用更简单的方式编写。最重要的是,它与POSIX兼容

我希望在伯恩壳牌(Bourne Shell)中运行的东西,不仅是伯恩壳牌(Bourne Reach Shell),而且总比什么都没有好!注意,Bats甚至不支持Zsh,Zsh几乎与Bash兼容。