一尘不染

Shell脚本的单元测试

linux

多年来,我从事的几乎所有产品都涉及到一定程度的Shell脚本(或Windows上的批处理文件,PowerShell等)。即使我们使用Java或C
++编写了大量代码,但似乎总是存在一些集成或安装任务,而这些任务或任务可以通过Shell脚本更好地完成。

因此,shell脚本成为附带代码的一部分,因此需要像已编译的代码一样进行测试。有没有人对其中的一些shell脚本单元测试框架有经验,例如shunit2?目前,我主要对Linux
shell脚本感兴趣。我想知道测试工具能够很好地复制其他xUnit框架的功能和易用性,以及与持续构建系统(如CruiseControl或Hudson)进行集成的难易程度。


阅读 489

收藏
2020-06-03

共1个答案

一尘不染

更新2019-03-01:我的偏好是现在蝙蝠。我在小型项目上使用了几年。我喜欢简洁明了的语法。我尚未将其与CI /
CD框架集成在一起,但是它的退出状态确实反映了套件的整体成功/失败,这比shunit2更好,如下所述。


上一个答案:

我正在将shunit2用于与Linux环境中的Java / Ruby
Web应用程序相关的shell脚本。它易于使用,并且与其他xUnit框架没有很大的不同。

我没有尝试与CruiseControl或Hudson / Jenkins集成,但是在通过其他方式实施持续集成时遇到了以下问题:

  • 退出状态:当测试套件失败时,shunit2不会使用非零退出状态来传达失败。因此,您要么必须解析shunit2输出以确定套件的通过/失败,要么更改shunit2使其表现出某些连续集成框架所期望的行为,并通过退出状态传达通过/失败。
  • XML日志:shunit2不会生成JUnit样式的XML结果日志。
2020-06-03