命令行Ruby应用程序使用哪种测试技术?
我已经写了一个Ruby程序,我想作为一个Gem发布。它是使用Thor和command_line_reporter构建的。我一直在学习的同时构建它,这对我来说意味着我没有考试。鉴于社区喜欢并期望测试,我理解这一点,我觉得我应该在公开该计划之前实现这一点 虽然这可以被视为征求意见,但我觉得一定有比其他任何东西更适合我的具体需求的东西 基于Thor的Ruby CLI应用程序应该/可以使用哪种测试技术命令行Ruby应用程序使用哪种测试技术?,ruby,unit-testing,rubygems,command-line-interface,thor,Ruby,Unit Testing,Rubygems,Command Line Interface,Thor,我已经写了一个Ruby程序,我想作为一个Gem发布。它是使用Thor和command_line_reporter构建的。我一直在学习的同时构建它,这对我来说意味着我没有考试。鉴于社区喜欢并期望测试,我理解这一点,我觉得我应该在公开该计划之前实现这一点 虽然这可以被视为征求意见,但我觉得一定有比其他任何东西更适合我的具体需求的东西 基于Thor的Ruby CLI应用程序应该/可以使用哪种测试技术 更多信息:该应用程序允许用户创建一个他们喜爱的节目列表,并附带一些信息字段。它以JSON格式将所有数据
更多信息:该应用程序允许用户创建一个他们喜爱的节目列表,并附带一些信息字段。它以JSON格式将所有数据保存到文件中。这是我的第一个完整程序,我以前从未编写过任何测试。绝大多数情况下,答案是“你喜欢什么就做什么。”
TestUnit和RSpec都被广泛使用,但最终可以归结为您认为最适合应用程序需要的任何东西。也许这有助于解决如何编写测试的问题。有很多测试框架,有很多关于我们应该如何编写测试的哲学,但我尽量保持简单。我通常从以下几点开始:
- 测试以确定我先得到了零或一个对象李>
- 测试对象的类型是否正确
- 测试以查看是否设置了强制属性,然后查看它们是否是正确的类型
autotest
命令,用于查找测试文件中的更改并自动运行测试。这使我很容易确保我没有出错,因为在一个单独的控制台窗口中,每次我保存时,自动测试都会执行它的操作。这是一个巨大的安全网,你很快就会习惯的。从文档中:
自动测试是一种连续的测试设备,在测试过程中使用
发展。保存文件后,自动测试将立即运行
相应的依赖测试
写作测试是一种必要的罪恶。它们将使您的代码编写负载增加一倍,但尽早开始并继续维护它们非常重要。稍后尝试将它们添加到大型代码库是一个主要问题,这会导致太多的应用程序从未进行过单元测试。讨厌。还有神道,它有点崇拜神道,我从来没有听说过神道。我也见过阿鲁巴、摩卡和迷你测试的使用。我真的不知道什么能满足需要,因为我以前没有写过任何测试。我正在寻找从哪里开始,有这么多的选择。如果你想征求我的个人意见,我更喜欢RSpec,因为我喜欢它的断言语法,但我尽量避免个人意见,所以只要有可能,我猜问这个问题,我想会有一个明确(ish)的答案最适合我的特定程序(基于Thor的CLI).TestUnit已被弃用。MiniTest取代了它。Ruby有几个很好的测试框架,而且所有框架都同样可用。作为开发人员,我们有自己的需求,有时我们的用户/客户也有自己的需求。您使用哪种框架在很大程度上取决于您和您的客户的需求,我们无法从您给我们的一点点需求中分辨出来,结果是一个问题会产生意见,没有任何事实依据。你能做的最好的事情就是仔细研究每一个问题,看看哪一个最适合你的需要和你的思维方式。我个人喜欢ZenTest的
autotest
围绕Ruby自己的Minitest展开,但那只是我。谢谢你这样安排。打破这些要点让它看起来简单多了。我觉得我现在可以看到这条路正在形成。ZenTest看起来很酷,我认为你在习惯自动运行测试方面是对的!很容易陷入测试细节的泥潭,忘记测试的主要原因,那就是功能性。编写测试是为了什么,而不是为了什么可能是这样的。一旦bug出现,它就是一个“是什么”的问题,是时候进行测试了。否则,你就永远无法完成真正的代码,因为有无数种方法可以破坏一个应用程序。