如何从Rails测试套件中运行单个测试?

问题描述 投票:117回答:12

如何从Rails测试套件中运行单个测试?

rake test ANYTHING似乎无济于事。

ruby-on-rails unit-testing rake
12个回答
146
投票

注意: 这不会通过rake运行测试。因此,您在Rakefile中拥有的任何代码都不会被执行。

要运行单个测试,请从rails项目的主目录中使用以下命令:

ruby -I test test/unit/my_model_test.rb -n test_name

这将运行一个名为“名称”的测试,该测试在指定文件的MyModelTest类中定义。通过使用测试名称,在其前面加上单词“ test”,然后用下划线将单词分开来形成test_name。例如:

class MyModelTest < ActiveSupport::TestCase

  test "valid with good attributes" do
    # do whatever you do
  end

  test "invalid with bad attributes" do
    # do whatever you do
  end
end

您可以通过以下方式运行两个测试:

ruby -I test test/unit/my_model_test.rb

还有第二个测试,通过

ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes

2
投票

在我的情况下,rake仅适用于TESTOPTS="-n='/sample/'"


0
投票

首先,访问要测试的库的文件夹(这很重要),然后运行:


0
投票

Rails文件夹


84
投票

运行测试文件

rake test TEST=tests/functional/accounts_test.rb

在测试文件中运行单个测试

rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"

(来自@Puhlze的评论。)


36
投票

对于rails 5:

rails test test/models/my_model.rb

27
投票

感谢@James,答案似乎是:

rails test test/models/my_model.rb:22

假定22是给定测试的行号。根据rails帮助:

 $ rails test --help

您可以通过在文件名后附加行号来运行单个测试:

    bin/rails test test/models/user_test.rb:27

此外,请注意,您的测试应继承自ActionDispatch :: IntegrationTest,以使其正常工作(这是我的错误:]]

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.

10
投票

在轨道5中,


5
投票

要在实际的Rails套件中运行单个测试:


3
投票

这是我的一个愚蠢的午夜问题。 Rails会在rake test上打印正在执行的命令。其余的是剪切和粘贴练习。


2
投票

如果要运行单个测试,则可以将它们作为常规Ruby脚本运行


© www.soinside.com 2019 - 2024. All rights reserved.