1

我正在尝试创建一个 xml 运行器来制作 Rails 单元测试的结果报告。这是我的代码:

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

但是,问题是您使用的是 Ruby 1.9.3。Ruby 1.9.3 中没有 /test/unit!嗯,有,但它只是基本测试的兼容层;当然没有 test/unit/ui/console/testrunner,也没有 module/class Test::Unit::UI::Console::TestRunner

相反,有minitest。您可以阅读 minitest 上的文档以了解如何制作测试运行器。http://docs.seattlerb.org/minitest/

于 2012-09-30T21:02:24.290 回答
1

需要考虑的一件事是 Test::Unit 包含在默认的 Ruby 1.8.7 安装中。如果您想在更高版本的 Ruby 中使用它,请继续将其安装为 gem。

sudo gem install test-unit

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

于 2014-03-12T03:26:26.060 回答