快速解決方案請參閱@ maximf的答案。對於另一種解決方案,你可以編寫你自己的rspec格式化器,這會讓你更好地控制你正在測量的內容。
例如,extnding的RSpec的基礎文本格式:
RSpec::Support.require_rpec_core "formatters/base_text_formatter"
module RSpec::Core::Formatters
class TimeFormatter < BaseTextFormatter
Formatters.register self, :example_started, :example_passed
attr_accessor :example_start, :longest_example, :longest_time
def initialize(output)
@longest_time = 0
super(output)
end
def example_started(example)
@example_start = Time.now
super(example)
end
def example_passed(example)
time_taken = Time.now - @example_start
output.puts "Finished #{example.example.full_description} and took @{Helpers.format_duration(time_taken)}"
if @time_taken > @longest_time
@longest_example = example
@longest_time = time_taken
end
super(example)
end
def dump_summary(summary)
super(summary)
output.puts
output.puts "The longest example was #{@longest_example.example.full_Description} at #{Helpers.format_duration(@longest_time)}"
end
end
end
注意這個只登錄過的例子次,但你可以添加一個example_failed沒有做類似的,它也只能使用RSpec 3。這是基於我的工作我自己格式化:https://github.com/yule/dots-formatter
是的,我可以,但是如果我在我的測試套件中有100個示例,它不會幫助我實現我想要的。 – fabersky
@fabersky你可以把任何數字與--profile一起配置N個例子,查看 –
好的。我低估了,因爲在你的第一個答案中,你沒有把「--profile」 – fabersky