【问题标题】:how to rails test all cases together like a test suite如何像测试套件一样一起测试所有案例
【发布时间】:2018-03-07 10:46:27
【问题描述】:

我在 test/functional 中的测试用例文件很少,它们都需要单独执行。

ruby -Itest test/functional/abc.rb

仅加载轨道需要 30 秒,进行测试需要 5 秒。 有没有办法只加载一次 Rails 并在该会话中运行所有案例文件?

这是一个非常糟糕的解决方案,因为它加载了 5 次轨道。

find test/functional -name '*.rb'|xargs -L 1 ruby -Itest

我需要一个使用 ruby​​ 1.9 的旧 rails 3.2 的解决方案。

只是为了尝试我已经写了 all.rb 但我猜构造函数需要 args 所以它不起作用。

require 'test_helper'
require 'functional/api_controller_test.rb'

ApiControllerTest.new()

【问题讨论】:

  • 这是一个 Rails 项目吗?为什么不使用内置测试 guides.rubyonrails.org/testing.html 或 rspec ? github.com/rspec/rspec-rails
  • 测试文档没有解释如何同时运行多个文件。我想我没有使用 rspec。使用ActionController::TestCase
  • 我注意到的第一件事:你命名了一个测试 abc.rb,但测试套件只会加载以 *_test.rb 结尾的测试。所以你的文件应该是abc_test.rb
  • 来自文档:“我们可以使用 bin/rails test 命令一次运行所有测试。”
  • 你能分享一下命令行应该是怎样的吗?

标签: ruby-on-rails ruby unit-testing tdd


【解决方案1】:
  1. 确保以该结尾命名测试文件:*_test.rb

  2. 在 Rails 3 中,您可以运行整个测试套件,如下所示:

-

$ rake test

$ bundle exec rake test

阅读更多:http://guides.rubyonrails.org/v3.2/testing.html#rake-tasks-for-running-your-tests

【讨论】:

  • 也试过了。给:~/.bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/trace_output.rb:16:in block in trace_on: invalid byte sequence in US-ASCII (ArgumentError)
  • 好的,这个错误与实际问题无关。如果您的 gemset 中有未在 UTF-8 中定义的 gem,则可能会发生这种情况。很难找出是哪些宝石导致了这种情况。最好的办法就是一步步卸载,找到那个
  • 没有。仍在使用 find 和 xargs 进行完整测试。
猜你喜欢
  • 1970-01-01
  • 2018-04-07
  • 2015-07-23
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 2017-09-06
  • 2012-03-07
  • 1970-01-01
相关资源
最近更新 更多