许多人一直不解,在 Ruby 社区的开发者,为什么更喜欢类似于 TextMate 这样的文本编辑器,而非图形化的 IDE 工具?其中一个原因就是,在文本编辑器环境下,有大量 Ruby 编写的工具,可以帮助开发者完成繁琐的编码工作。最近,在Pat Eyler 的blog 中,对这些工具的特性进行了评比。
Autotest 就是其中之一,它是 Zentest 包中的一个组件。其安装方式如下:
gem install zentest
Zentest 可以帮助你撰写单元测试,并且将测试与你的代码进行同步,而 Autotest 只做一件事请,那就是:在启动之后,每当文件保存时,就会重新执行一遍相应的单元测试。Autotest 非常智能化,只会运行保存的文件所对应的那部分单元测试。
Autotest 的作者 Eric Hodel,谈及编写这款工具的原因时,说道这是由于他的工作模式所致使:
在我编写 autotest 之前,我进行细粒度的代码修改时,往往在语法上都是正确的。我编写 autotest 来自动执行单元测试,这样我就不需要手动选择需要运行哪个测试。因为我的变动很小,所以我也不需要将注意力分散于在控制台中敲打测试命令之上。
他同时也提到了执行测试的另一个益处:可以将代码在每次保存的时候都进行装载和检查。流行的 Java IDE 工具,都会执行一组庞大的静态分析,比方说在代码之上的语法语义检查,或者是在保存文件时执行增量检查。相同层面的自动化检查通过 Autotest 就可以完成,并且可以让开发者的注意力仍然保持在他们喜爱的编辑器之上。
Autotest 同样也允许通过插件接口来进行拓展。这如同在项目根目录下创建一个".autotest"文件那样简单。实现这一点,可以使用已经存在的插件,或是针对不同的钩子程序编写自定义的处理句柄:
Autotest.add_hook :red { |autotest| p "Failures!" }
以上语句展示的是当测试失败时的处理方式,其中第一个参数是 hook 的名称。当测试未执行通过时,这段代码将会简单的打印输出“Failures!”。当然,根据测试的输出结果,Autotest 同样也允许调用其他工具,或者是在每次保存的时候都执行测试。目前,与 Emacs 编辑器整合的 Autotest 插件,或是 acoustic feedback 插件已经可以使用。
你以前曾听说过 Autotest 吗?是否打算立即尝试一下呢?
查看英文原文: Autotest - a hidden tool gem
评论