我想根据this博文发现我的测试套件中哪些测试最慢。这是代码的缩小版本:
# test/test_time_tracking.rb
module TestTimeTracking
class ActiveSupport::TestCase
setup :mark_test_start_time
teardown :record_test_duration
def mark_test_start_time
@start_time = Time.now
end
def record_test_duration
puts "Test class: #{self.class.name}"
puts "Duration: #{Time.now - @start_time}"
end
end
end
# test/test_helper.rb
require 'test_time_tracking'
include TestTimeTracking
# ...
有没有办法在安置或拆解期间打印出测试名称?在博客文章中,他们在拆解块中调用name
属性,但这会在我的情况下引发错误。我还试过@name
和@method_name
但没有成功。
我在默认的Rails测试框架之上使用shoulda-contexts
gem。我知道我可以使用rake test TESTOPTS=-v
获取测试名称和持续时间,但是我必须运行另一个脚本来解析输出。
答案 0 :(得分:4)
使用minitest-reporters。本页提供了安装指南。 在配置后使用rspec记者。即在你的test_helper.rb文件中写
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new()]
然后运行测试。这个&#l; ll格式输出如下:
您可以查看每次测试所花费的时间。
答案 1 :(得分:1)
def record_test_duration
puts "Test class: #{self.class.name}"
puts "Test method: #{self.method_name}"
puts "Duration: #{Time.now - @start_time}"
end
self.method_name将打印当前的测试方法名称
答案 2 :(得分:0)
导轨 5
bin/rails test -v
它会打印如下内容:
SimpleTest#test_: Simple should be a success. = 0.26 s = .
SimpleTest#test_: Simple should be a failure. = 0.23 s = .