Как перенаправить результат теста в текстовый файл по ruby? - PullRequest
1 голос
/ 30 марта 2011

Когда ваш собственный набор тестов был выполнен, были некоторые результаты.Я хочу сохранить эту информацию в текстовом файле или HTML, но я не знаю, как сохранить эти выходные сообщения, если кто-то знает, пожалуйста, поделитесь со мной, заранее спасибо, приведенный ниже код - мой эксперимент, но он не работает.

require File.join(File.dirname(__FILE__),  'person')
require "test/unit"

filename = "logfile.txt"
$logfile = File.new(filename,"a")
open(logfile,'a') { |f| f << $stdout}

class PersonTest < Test::Unit::TestCase

  FIRST_NAME, LAST_NAME, AGE = 'Nathaniel', 'Taldtretbott', 25

  def setup
    @person = Person.new(FIRST_NAME, LAST_NAME, AGE)
  end

  def test_first_name
    assert_equal "asv", @person.first_name,"try to compare"
  end

  def test_last_name
    assert_equal "Taldtretbott", @person.last_name
  end

  def test_full_name
    assert_equal FIRST_NAME + ' ' + LAST_NAME, @person.full_name
  end
end

Ответы [ 3 ]

1 голос
/ 31 марта 2011

Почему бы не сделать

ruby testfile.rb > text_output.txt
1 голос
/ 01 апреля 2011

У меня было некоторое время, чтобы попробовать тестирование решения. Мне удалось заставить его работать так:

require 'test/unit'

STDOUT = $stdout = File.open("stdout.txt", "a+")
STDERR = $stderr = File.open("stderr.txt", "a+")

class AreasTest < Test::Unit::TestCase
  def test_ok
    puts "#{Time.now} Hello "
    a = 10
    assert_equal(a, 10)
  end


  def test_fail
    a = 9
    assert_equal(a, 10)
  end
end

Это выдает предупреждение, потому что STDOUT и STDERR уже были инициализированы, но только перенаправление $ stdout и $ stderr не работает (работает только для обычных пут).

Надеюсь, это поможет.

0 голосов
/ 30 марта 2011

Попробуйте:

$stdout = $logfile

вместо:

open(logfile,'a') { |f| f << $stdout}

Это означает, что вы перенаправляете стандартный вывод в файл.

...