1

Railsユニットテストの結果レポートを作成するためのxmlランナーを作成しようとしています。これが私が持っているコードです:

require 'test/unit'
require 'test/unit/ui/console/testrunner'

class FastFailRunner < Test::Unit::UI::Console::TestRunner
  def add_fault(fault)
    @faults << fault
    nl
    output("%3d) %s" % [@faults.length, fault.long_display])
    output("--")
    @already_outputted = true
  end

  def finished(elapsed_time)
    nl
    output("Finished in #{elapsed_time} seconds.")
    nl
    output(@result)
  end
end

Test::Unit::AutoRunner::RUNNERS[:fastfail] = proc do |r|
  FastFailRunner
end

私がそれを実行するとTESTOPTS="/home/alex/RubymineProjects/app2/test/unit/runner.rb --runner=xml" rake test

...エラーが発生します(かなり奇妙なエラー)

/home/alex/.rvm/gems/ruby-1.9.3-p194@global/gems/rake-0.9.2.2/lib/rake/ext/module.rb:36:in `const_missing': uninitialized constant Test::Unit::UI::XML (NameError)
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/runner/xml.rb:5:in `block in <module:Unit>'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/autorunner.rb:389:in `[]'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/autorunner.rb:389:in `run'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/autorunner.rb:58:in `run'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit.rb:501:in `block in <top (required)>'
gem install minitest
/home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/runner/xml.rb:5:in `block in <module:Unit>': uninitialized constant Test::Unit::UI::XML (NameError)
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/autorunner.rb:389:in `[]'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/autorunner.rb:389:in `run'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit/autorunner.rb:58:in `run'
    from /home/alex/.rvm/gems/ruby-1.9.3-p194/gems/test-unit-2.5.2/lib/test/unit.rb:501:in `block in <top (required)>'
Errors running test:units! #<RuntimeError: Command failed with status (1): [/home/alex/.rvm/rubies/ruby-1.9.3-p194/bin...]>
Errors running test:functionals! #<RuntimeError: Command failed with status (1): [/home/alex/.rvm/rubies/ruby-1.9.3-p194/bin...]>

私は要求しようとしましtest/unit/ui/xml/testrunner.rbたが、運がありませんでした。何かご意見は?

4

2 に答える 2

2

Ruby 1.8.7を使用している場合は、次のように言うことができます。

require 'test/unit/ui/console/testrunner'
p Test::Unit::UI::Console::TestRunner # => no problem

(そのようなファイルtest/unit/ui/xml/testrunner.rbはないので、あなたがそこまで何をしていたのかわかりません。)

test / unit.rbのドキュメントを見てください。これを行うには、実際にサンプルコードが必要です。http ://www.ruby-doc.org/stdlib-1.8.7/libdoc/test/unit/rdoc/Test /Unit.html

ただし、問題は、Ruby1.9.3を使用していることです。Ruby1.9.3には/test/unitはありません。ありますが、これは基本的なテストの互換性レイヤーにすぎません。確かに、test / unit / ui / console / testrunnerも、module/classもありませんTest::Unit::UI::Console::TestRunner

代わりに、ミニテストがあります。minitestのドキュメントを読んで、テストランナーを作成する方法を確認できます。http://docs.seattlerb.org/minitest/

于 2012-09-30T21:02:24.290 に答える
1

考慮すべきことの1つは、Test::UnitがデフォルトのRuby1.8.7インストールに含まれていたことです。それ以降のバージョンのRubyで使用する場合は、先に進んでgemとしてインストールしてください。

sudo gem install test-unit

http://test-unit.rubyforge.org/

于 2014-03-12T03:26:26.060 に答える