Ari*_*Ari 1 ruby testing ruby-on-rails testunit minitest
Minitest允许您通过覆盖test_order来按顺序运行测试alpha.(您也可以使用该i_suck_and_my_tests_are_order_dependent!方法.)
执行此操作后,如何控制跨多个文件运行测试的顺序?
有没有办法从一个文件运行一些测试,然后切换到另一个文件?
查看源代码,似乎应该能够控制方法的排序方式.但是你如何指定这个顺序呢?
i_suck_and_my_tests_are_order_dependent!(或def self.test_order; :alpha;end定义字母顺序.
除了字母顺序之外,只有一个随机顺序定义(至少在'minitest','> 5.5.1','<= 5.6.1'.
但你可以修补MiniTest::Test.runnable_methods以获得另一个订单.
gem 'minitest'
require 'minitest/autorun'
class MiniTest::Test
#Add a test order :defined
def self.runnable_methods
methods = methods_matching(/^test_/)
case self.test_order
when :random, :parallel then
max = methods.size
methods.sort.sort_by { rand max }
when :defined then # <-new
methods
when :alpha, :sorted then
methods.sort
else
raise "Unknown test_order: #{self.test_order.inspect}"
end
end
end
class TestOrder < MiniTest::Test
def self.test_order; :defined; end
#Alphabetic order
#~ def self.test_order; :alpha;end
#~ i_suck_and_my_tests_are_order_dependent!
def test_4; p __method__; end
def test_3; p __method__; end
def test_2; p __method__; end
def test_1; p __method__; end
end
Run Code Online (Sandbox Code Playgroud)
但是测试顺序仅针对每个Test-subclass定义,而不是针对所有测试的全局定义.因此,这不会让您访问多个测试类中的测试方法的顺序.
我估计你的文件中有不同的测试类,所以这与你的问题相对应.(不是文件是标准,而是Test-class.)
如果在测试文件中只定义一个Test类,则可以定义自己的订单.
| 归档时间: |
|
| 查看次数: |
2505 次 |
| 最近记录: |