如何在Rails测试中结合自动测试和spork?

自动测试通过仅运行更改的测试来提高测试运行的速度。

但是我想通过使用spork预加载Rails环境来进一步推动它,这样我将获得更快的反馈。

这可能吗?

自动测试: https : //github.com/grosser/autotest

Spork: http ://github.com/timcharper/spork

ARTICLE1 mikbe让你满意! 我会尝试在这里重新措辞,但这篇文章做得非常好。

如果您碰巧使用OSX,还有使用Growl进行托盘通知的说明。

ARTICLE2 Ruby Inside还有 Rails 3和RSpec 2 的演练 。

如果您使用Ruby 1.9并希望将spork和autotest与Test :: Unit(实际上是MiniTest)一起使用,请尝试以下方法:

的Gemfile:

group :test do # Newer version of test::unit: gem 'minitest' # spork preloads a rails instance which is forked every time the tests are # run, removing test startup time. gem 'spork' # Run 'spork minitest' to start drb server (test server). Use 'testdrb' to # run individual tests via spork. gem 'spork-minitest' # Run 'bundle exec autotest' to rerun relevant tests whenever a file/test is # changed. '.autotest' makes sure the tests are run via test server (spork). gem 'autotest-standalone' # -pure gives us autotest without ZenTest gem. gem 'autotest-rails-pure' end 

.autotest :

 class Autotest # run tests over drb server (spork) def make_test_cmd files_to_test if files_to_test.empty? "" # no tests to run else "testdrb #{files_to_test.keys.join(' ')}" end end end 

(注意:说明说bin/testdrb ,但我把它更改为testdrb以使其适用于我。)

在终端:

 spork minitest --bootstrap 

编辑test/test_helper.rb并按照说明操作。

完成上述设置后,您可以启动测试服务器:

 spork minitest 

最后在另一个终端启动自动测试:

 bundle exec autotest 

并且(希望)使用MiniTest享受真正快速的自动测试。

我还没有尝试过,但是RailsTutorial的第3章中有一节介绍了设置spork的一些“黑客”。 该教程目前说:

…截至本文撰写时,Spork并未正式支持Rails 3

本章继续介绍如何使用自动测试进行设置。 有一点需要知道,你需要

–drb

在.rspec文件中。