哪种测试技术用于命令行Ruby应用程序?

时间:2013-09-26 17:03:46

标签: ruby unit-testing rubygems command-line-interface thor

我已经编写了一个Ruby程序,我希望将其作为Gem发布。它是使用Thor和command_line_reporter构建的。我在学习的过程中一直在构建它,这对我来说意味着我没有测试。看到社区喜欢并期望测试,我理解,我觉得我应该在公开程序之前实现这一点。

虽然这可以被视为征求意见,但我觉得必须有比某些事情更适合我的特定需求的东西。

哪种测试技术应该/可以用于基于Thor的Ruby CLI应用程序?

更多信息:该应用程序允许用户使用一些附带信息字段创建自己喜欢的程序列表。它以JSON格式将所有数据保存到文件中。这是我的第一个完整的程序,我以前从未写过任何测试。

2 个答案:

答案 0 :(得分:0)

绝大多数人,答案就是“无论你想要什么。”

TestUnit和RSpec都被广泛使用,但它最终归结为您觉得最适合您应用程序需求的任何内容。

答案 1 :(得分:0)

也许它可能有助于解决如何编写测试。有很多测试框架,以及我们应该如何编写测试的许多哲学,但我试着保持简单。我通常从这些开始:

  • 测试看我先回到零或物体。
  • 测试对象是否是正确的类型。
  • 测试是否设置了必需属性,然后测试它们是否为正确的类型。

一旦我完成了这些操作,我就会开始对抗代码,抛出越界和邪恶的价值,迫使它提出异常,如果它被认为是这样做。

然后,当进一步使用/测试揭示错误时,我会添加特定的测试以检查那些不再出现的东西,因为我搞砸了代码。 ("代码拧紧"会发生,所以重要的是我知道我没有让这个程序熄火。)

ZenTest具有autotest命令,用于查找测试文件中的更改并自动运行测试。这让我很容易确保自己没有东西,因为在一个单独的控制台窗口中,每次我保存时,自动测试都会做它的事情。它是一个非常大的安全网,你会习惯很快。来自文档:

  

autotest是一个连续的测试设施,意在使用期间   发展。保存文件后,autotest将立即运行   相应的依赖性测试。

写作测试是必要的恶魔。它们会使代码编写负担增加一倍,但是提前启动并继续维护非常重要。尝试稍后将它们添加到大型代码库是一个主要问题,导致太多应用程序永远不会进行单元测试。恶心。