Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命令行Ruby应用程序使用哪种测试技术?_Ruby_Unit Testing_Rubygems_Command Line Interface_Thor - Fatal编程技术网

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

命令行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格式将所有数据

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

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

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


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

绝大多数情况下,答案是“你喜欢什么就做什么。”


TestUnit和RSpec都被广泛使用,但最终可以归结为您认为最适合应用程序需要的任何东西。

也许这有助于解决如何编写测试的问题。有很多测试框架,有很多关于我们应该如何编写测试的哲学,但我尽量保持简单。我通常从以下几点开始:

  • 测试以确定我先得到了零或一个对象
  • 测试对象的类型是否正确
  • 测试以查看是否设置了强制属性,然后查看它们是否是正确的类型
一旦我排除了这些障碍,我就会开始反对代码,向它抛出越界和邪恶的值,如果它应该这样做的话,强迫它抛出异常

然后,随着进一步的使用/测试暴露出bug,我会添加一些特定的测试来检查这些bug在我处理代码时不会再次出现。(“代码乱搞”即将发生,所以我知道这很重要,我没有让程序付之一炬。)

具有
autotest
命令,用于查找测试文件中的更改并自动运行测试。这使我很容易确保我没有出错,因为在一个单独的控制台窗口中,每次我保存时,自动测试都会执行它的操作。这是一个巨大的安全网,你很快就会习惯的。从文档中:

自动测试是一种连续的测试设备,在测试过程中使用 发展。保存文件后,自动测试将立即运行 相应的依赖测试


写作测试是一种必要的罪恶。它们将使您的代码编写负载增加一倍,但尽早开始并继续维护它们非常重要。稍后尝试将它们添加到大型代码库是一个主要问题,这会导致太多的应用程序从未进行过单元测试。讨厌。

还有神道,它有点崇拜神道,我从来没有听说过神道。我也见过阿鲁巴、摩卡和迷你测试的使用。我真的不知道什么能满足需要,因为我以前没有写过任何测试。我正在寻找从哪里开始,有这么多的选择。如果你想征求我的个人意见,我更喜欢RSpec,因为我喜欢它的断言语法,但我尽量避免个人意见,所以只要有可能,我猜问这个问题,我想会有一个明确(ish)的答案最适合我的特定程序(基于Thor的CLI).TestUnit已被弃用。MiniTest取代了它。Ruby有几个很好的测试框架,而且所有框架都同样可用。作为开发人员,我们有自己的需求,有时我们的用户/客户也有自己的需求。您使用哪种框架在很大程度上取决于您和您的客户的需求,我们无法从您给我们的一点点需求中分辨出来,结果是一个问题会产生意见,没有任何事实依据。你能做的最好的事情就是仔细研究每一个问题,看看哪一个最适合你的需要和你的思维方式。我个人喜欢ZenTest的
autotest
围绕Ruby自己的Minitest展开,但那只是我。谢谢你这样安排。打破这些要点让它看起来简单多了。我觉得我现在可以看到这条路正在形成。ZenTest看起来很酷,我认为你在习惯自动运行测试方面是对的!很容易陷入测试细节的泥潭,忘记测试的主要原因,那就是功能性。编写测试是为了什么,而不是为了什么可能是这样的。一旦bug出现,它就是一个“是什么”的问题,是时候进行测试了。否则,你就永远无法完成真正的代码,因为有无数种方法可以破坏一个应用程序。