用Builder运行Ruby单元测试

时间:2014-01-11 10:03:59

标签: ruby unit-testing buildr

我现在使用buildr已经有一段时间了,但今天我遇到了与ruby代码单元测试相关的一个小问题。

所以在我的构建文件中我有这些行:

define "ruby-project" do

    project.version = VERSION_NUMBER
    project.group = GROUP

    Rake::TestTask.new(:test_rb) do |t|
        t.warning = true
        t.verbose = true
        t.test_files = FileList['test/*.rb']
    end
    task test => [:test_rb]

end

运行buildr test实际上运行测试,这很好。测试实际上只是:

require 'test/unit'

class TestFileParse < Test::Unit::TestCase
    def test_fail
        assert(false, 'test to fail')
     end
end

正如预期的那样,它失败了,但是对我来说很奇怪的是,buildr会使用该消息退出构建:

sh: 2: Syntax error: Unterminated quoted string
Buildr aborted!
RuntimeError : Command failed with status (1): [/usr/bin/ruby1.9.1 -w -I"lib" -I"/var/lib/...]

运行ruby file-with-failing-test-from-above.rp不会抛出运行时错误,而是在屏幕上打印测试报告,这就是我想要的。

问题

如果测试失败,如何在不退出RuntimeError的情况下使Buildr运行单元测试?

问候菲利普

1 个答案:

答案 0 :(得分:0)

由于我不太熟悉Ruby开发,涉及Rake的内容,我一直在寻找错误的问题。而不是寻找:»如何使用buildr运行单元测试«,问题应该是»如何使用rake«运行单元测试,因为buildr是一种扩展的Rake(类似于»maven-ant-relationship«) 。所以在Rake中你可以做的一切,也可以在buildr中做。因此,在良好的SO上,在buildr中运行ruby unit tests的答案是here

此外,可以使用buildr运行RSpec's,因此有两个选项:

  1. 设置project.test.using :rspec,涉及JRuby的使用,因此必须设置JRUBY_HOME(在我的情况下为~/.rvm/rubies/jruby-1.7.9/),或在jruby中运行buildr。在我的情况下,这减慢了测试执行速度,因为每次需要启动一个jvm。
  2. 或者可以在rspec's rake task中使用this manner。我选择这种方法,因为我的测试运行得更快,没有jvm开销。
  3. n.b。正如答案所暗示的那样,我切换到了rspec。

    快乐测试/指定!