11

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

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

这可能吗?

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

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

4

3 回答 3

13

ARTICLE1 mikbe 有你! 我想在这里改写一下,但这篇文章做得很好。

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

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

于 2011-03-02T03:59:23.670 回答
4

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

宝石文件:

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

.自动测试

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 进行真正快速的自动测试。

于 2012-06-25T13:25:39.080 回答
0

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

...在撰写本文时,Spork 并未正式支持 Rails 3

本章继续讲述如何使用自动测试进行设置。要知道的一件事是你需要

--drb

在您的 .rspec 文件中。

于 2011-01-31T03:07:32.493 回答