【问题标题】:Ruby - Executing tests in a random order with rakeRuby - 使用 rake 以随机顺序执行测试
【发布时间】:2023-03-19 04:53:01
【问题描述】:

如何让我的 Rails 应用程序的测试以随机顺序执行? 有没有使用 rake 的简单解决方案?

【问题讨论】:

标签: ruby random testing rake


【解决方案1】:

你不妨看看“ZenTest 3.9.0:现在有更多的邪恶”(不能做直接链接,使用谷歌的缓存)

Added ability to set test execution order, defaults to :random. EVIL!

【讨论】:

  • 我用 ZenTest 玩了一段时间,但我从来没想过如何启用随机顺序。我的意思是,默认执行顺序是固定的,并且在不同的测试执行中保持不变。
【解决方案2】:

给你,在lib/tasks/tasks.rb中定义这个

namespace :test do 
  namespace :randomize do 
    desc "Randomize tests"
    Rake::TestTask.new(:all => "db:test:prepare") do |t|
      t.libs << "test"
      t.test_files = Rake::FileList[
        'test/unit/**/*_test.rb',
        'test/functional/**/*_test.rb', 
        'test/integration/**/*_test.rb' 
      ].shuffle
      t.verbose = true
    end
  end
end

运行:rake test:randomize:all

请记住,在文件中的测试仍将按照它们出现的顺序执行。我想你可以猴子补丁测试单元允许这样做。

【讨论】:

  • 谢谢山姆。这对我不起作用,实际上您发布的解决方案与我的解决方案相同:只需随机播放包含要执行的测试文件列表的数组。事实上,您传递给 rake TestTask 的测试文件的顺序似乎被忽略了,这意味着内部 rake 将按照文件名的字母顺序对该列表进行排序。我使用 TESTOPTS="-v" 选项验证执行 rake 任务的这种行为,以监控实际的测试执行顺序。以下是我使用的版本: Ruby:1.8.6 - 114 RubyGems:1.3.5 Rake:0.8.7 Rails:2.3.3 你有更多想法吗?发送!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多