Rails 3.0.10、Ruby 1.9.2、ActiveSupport::TestCase
我想(仅)将失败的测试的日志部分打印到 STDOUT。如果有我没有找到的插件,请告诉我。否则,我想知道:
- 如何在拆解中获得结果(通过、失败、错误)?在一个类似的问题中,建议覆盖所有断言方法以挽救异常,但我不太喜欢这种方法。
我的方法是进行设置,将日志记录更改为字符串,并在失败时将字符串泵送到 STDOUT。
Rails 3.0.10、Ruby 1.9.2、ActiveSupport::TestCase
我想(仅)将失败的测试的日志部分打印到 STDOUT。如果有我没有找到的插件,请告诉我。否则,我想知道:
我的方法是进行设置,将日志记录更改为字符串,并在失败时将字符串泵送到 STDOUT。
这些方法在拆卸方法中都可以正常工作:
self.passed?
self.class.name
self.method_name
因此,在设置中,您可以保存旧记录器并创建一个新记录器来记录到字符串缓冲区:
@old_logger = Rails.logger
@old_ar_logger = ActiveRecord::Base.logger
@current_buffer = StringIO.new
Rails.logger = Logger.new(@current_buffer)
ActiveRecord::Base.logger = Rails.logger
在拆解、重置记录器、测试是否通过?并转储缓冲日志以防万一:
Rails.logger = @old_logger
ActiveRecord::Base.logger = @old_ar_logger
unless self.passed?
@current_buffer.close_write
STDOUT << @current_buffer.string
@current_buffer.close
end
这对我来说可以。请注意,如果您有无限循环或类似的东西,您将不会注意到那么容易。