[英]Minitest - A test suite with method-level granularity
After an upgrade, I'm finding the same several test methods failing, so I'd like to automate testing just those instead of all methods in all classes. 升级后,我发现相同的几种测试方法都失败了,所以我想自动测试那些方法,而不是自动测试所有类中的所有方法。 I want to list each class-method pair (eg
TestBlogPosts.test_publish
, TestUsers.test_signup
) and have them run together as a test suite. 我想列出每个类方法对(例如
TestBlogPosts.test_publish
, TestUsers.test_signup
),并将它们作为测试套件一起运行。 Either in a file or on the command-line, I don't really care. 无论是在文件中还是在命令行中,我都不在乎。
I'm aware of these techniques to run several entire classes , but I'm looking for finer granularity here. 我知道这些技术可以运行几个完整的类 ,但是我在这里寻找更好的粒度。 (Similar to what -n /pattern/ does on the command-line - to run a subset of test methods - but across multiple classes.)
(类似于-n / pattern /在命令行上执行的操作,以运行测试方法的子集,但跨多个类。)
You could renounce minitest/autorun
and call Minitest.run
with your self defined test selection. 您可以放弃
minitest/autorun
并使用自己定义的测试选项调用Minitest.run
。
An example: 一个例子:
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
The result: 结果:
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
When you call the following test: 当您调用以下测试时:
Minitest.run(%w{-n /MyTest1.test_subtract/}) #select onespecific test method
puts '=================='
Minitest.run(%w{-n /MyTest2.test_add/}) #select one specific test method
then you get 然后你得到
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
The Minitest.run
takes the same parameters you use from the command line. Minitest.run
使用与您在命令行中使用的相同的参数。 So you can use the -n
option with your selection, eg /MyTest1.test_subtract|MyTest2.test_add/
. 因此,可以在选项中使用
-n
选项,例如/MyTest1.test_subtract|MyTest2.test_add/
。
You could define different tasks or methods with different Minitest.run
-definition to define your test suites. 您可以使用不同的
Minitest.run
-definition定义不同的任务或方法,以定义您的测试套件。
Attention: No test file you load may contain a require 'minitest/autorun'
. 注意:您加载的任何测试文件都不得包含
require 'minitest/autorun'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.