如何按顺序运行测试?

时间:2013-04-26 13:11:05

标签: ruby-on-rails-4 factory-bot ruby-1.9.3 testunit

我正在尝试编写测试狮身人面像搜索的测试。我需要用户将一些参数传递给api,并根据params shpinx执行搜索。

我有以下3个测试

在test_helper.rb中

我已经设置了所有内容

  require 'factory_girl'
  require 'thinking_sphinx/test'
  ThinkingSphinx::Test.init
  .........
  class ActiveSupport::TestCase

  self.use_transactional_fixtures = false
  self.use_instantiated_fixtures  = false
  fixtures :all

我的测试

test "should 1st test" do
  ThinkingSphinx::Test.start
  # uthenticatoin and creating records in databese with Factory Girl
  ThinkingSphinx::Test.index

  get "some/path", {params}, @headers

  assert_response :success
end

test "should 2nd test" do
  # uthenticatoin and creating records in databese with Factory Girl
  ThinkingSphinx::Test.index

  get "some/path", {params}, @headers

  assert_response :success
  # other assertions
end

test "should 3rd test" do
  # uthenticatoin and creating records in databese with Factory Girl
  ThinkingSphinx::Test.index

  get "some/path", {params}, @headers

  assert_response :success
  # other assertions
  ThinkingSphinx::Test.stop
end

我不知道为什么我的测试不按顺序运行,而是第2次,第3次,第1次 我怎样才能使测试按顺序运行。我正在使用基本的Rails Test :: Unit。 由于测试细节,订单对我很重要。 感谢。

1 个答案:

答案 0 :(得分:1)

您的测试永远不应该以有序的方式编写。我明白为什么你想要这个订单,并且有办法解决这个问题。试试这个:

setup do
  ThinkingSphinx::Test.start
end

# Your tests

teardown do
  ThinkingSphinx::Test.stop
end

这使得在每个测试ThinkingSphinx::Test开始之前,并在每个测试之后停止。这是设置它的理想方法,所以现在运行测试的顺序并不重要。

但是,如果ThinkingSphinx::Test.start是一个漫长的过程,您可能不希望它为每个测试运行。我不知道TestUnit是否允许您在整个套件或一组测试之前运行设置,但在RSpec中您可以做到这一点,这样可以更好地为您服务。