Надеюсь, я правильно понял ваш вопрос.
Вы имеете в виду что-то вроде этого:
gem 'test-unit'
require 'test/unit'
class StdOutLogger < IO
def initialize(*)
super
@file = File.open('log.txt', 'w')
@stdout = true
end
#write to stdout and file
def write(s)
$stdout << s
@file << s
end
end
STDOUT = StdOutLogger.new(1)
class MyTest < Test::Unit::TestCase
def test_1()
assert_equal( 2, 1+1)
assert_equal( 2, 4/2)
assert_equal( 1, 3/2)
assert_equal( 1.5, 3/2.0)
end
end
Но я бы порекомендовал скопировать стандартный вывод на уровне операционной системы
ruby mytest.rb > log.txt
Вот версия для пропуска между stdout и выводом файла. Выходной переключатель является лишь временным решением - возможно, его можно сделать лучше.
class StdOutLogger < IO
def initialize(*)
super
@file = File.open('log.txt', 'w')
@stdout = true
end
def write(s)
case s
when /\AError:/
@stdout = false #change to file
when /\A(Pending):/
@stdout = true #change to file
end
if @stdout
$stdout << s
else
@file << s
end
end
end
STDOUT = StdOutLogger.new(1)