-->

MINITEST - 一个测试套件与方法级粒度(Minitest - A test suite w

2019-10-21 23:55发布

升级后,我发现同样的几种测试方法失败,所以我想只是那些不是自动化的所有类的所有方法测试。 我想列出每一个类的方法对(如TestBlogPosts.test_publishTestUsers.test_signup )并将它们作为一个测试套件一起运行。 无论是在一个文件或命令行,我真的不在乎。

我所知道的这些技术来运行多个整个班 ,但我在这里寻找更细的粒度。 (对命令行什么-n /模式/做类似 - 运行的测试方法的子集 - 但在多个类别。)

Answer 1:

你可以放弃minitest/autorun并调用Minitest.run与你的自我定义的测试选择。

一个例子:

gem 'minitest'
require 'minitest'
#~ require 'minitest/autorun' ##No!

#Define Test cases. 
#The `puts`-statements are kind of logging which tests are executed.
class MyTest1 < MiniTest::Test
  def test_add
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(2, 1+1)
  end
  def test_subtract
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(0, 1-1)
  end
end
class MyTest2 < MiniTest::Test
  def test_add
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(2, 1+1)
  end
  def test_subtract
    puts "call %s.%s" % [self.class, __method__]
    assert_equal(1, 1-1)  #will fail
  end
end

#Run two suites with defined test methods.
Minitest.run(%w{-n /MyTest1.test_subtract|MyTest2.test_add/})  #select two specific test method

结果:

Run options: -n "/MyTest1.test_subtract|MyTest2.test_add/" --seed 57971

# Running:

call MyTest2.test_add
.call MyTest1.test_subtract
.

Finished in 0.002313s, 864.6753 runs/s, 864.6753 assertions/s.

2 runs, 2 assertions, 0 failures, 0 errors, 0 skips

当你调用下面的测试:

Minitest.run(%w{-n /MyTest1.test_subtract/})  #select onespecific test method
puts '=================='
Minitest.run(%w{-n /MyTest2.test_add/})  #select one specific test method

然后你

Run options: -n /MyTest1.test_subtract/ --seed 18834

# Running:

call MyTest1.test_subtract
.

Finished in 0.001959s, 510.4812 runs/s, 510.4812 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
==================
Run options: -n /MyTest2.test_add/ --seed 52720

# Running:

call MyTest2.test_add
.

Finished in 0.000886s, 1128.0825 runs/s, 1128.0825 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

Minitest.run需要你在命令行中使用相同的参数。 所以,你可以使用-n与您的选择,如选择/MyTest1.test_subtract|MyTest2.test_add/

您可以定义不同的任务或方法不同Minitest.run -definition来定义你的测试套件。

注意:没有测试文件加载可能包含一个require 'minitest/autorun'



文章来源: Minitest - A test suite with method-level granularity