0

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

虽然这可以被视为征求意见,但我觉得肯定有一些东西比其他任何东西都更适合我的特定需求。

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

更多信息:该应用程序允许用户创建一个他们最喜欢的程序列表,其中包含一些伴随信息的字段。它将所有数据保存到 JSON 格式的文件中。这是我的第一个完整程序,我之前从未编写过任何测试。

4

2 回答 2

0

绝大多数情况下,这个问题的答案是“随心所欲”。

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

于 2013-09-26T17:08:57.747 回答
0

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

  • 测试看看我先返回 nil 还是一个对象。
  • 测试对象是否是正确的类型。
  • 测试是否设置了强制属性,然后它们是否是正确的类型。

一旦我解决了这些问题,我就会开始对抗代码,向它抛出越界和邪恶的值,如果它应该这样做,就会迫使它引发异常。

然后,随着进一步的使用/测试发现错误,我会添加特定的测试来检查当我乱搞代码时这些测试不会再次出现。(“代码乱七八糟”会发生,所以我知道我没有让程序失控很重要。)

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

autotest 是一种持续的测试工具,旨在在开发过程中使用。保存文件后,自动测试将运行相应的依赖测试。

编写测试是必要的邪恶。它们将使您的代码编写负载加倍,但它们对于尽早开始并继续维护非常重要。稍后尝试将它们添加到大型代码库中是一个主要问题,导致太多应用程序从不进行单元测试。恶心。

于 2013-09-26T17:30:22.007 回答