簡體   English   中英

Minitest-具有方法級別粒度的測試套件

[英]Minitest - A test suite with method-level granularity

升級后,我發現相同的幾種測試方法都失敗了,所以我想自動測試那些方法,而不是自動測試所有類中的所有方法。 我想列出每個類方法對(例如TestBlogPosts.test_publishTestUsers.test_signup ),並將它們作為測試套件一起運行。 無論是在文件中還是在命令行中,我都不在乎。

我知道這些技術可以運行幾個完整的類 ,但是我在這里尋找更好的粒度。 (類似於-n / pattern /在命令行上執行的操作,以運行測試方法的子集,但跨多個類。)

您可以放棄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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM