2014-01-11 3 views
0

Я использую buildr в течение некоторого времени, но сегодня я столкнулся с небольшой проблемой в отношении модульного тестирования кода ruby.Run Ruby Unit Tests with Buildr

Так что в моем файле построении У меня есть эти строки:

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 не бросать ошибка выполнения, вместо этого он печатает тестовый отчет на экране, что именно я хочу.

Вопрос

Как я могу сделать Buildr запустить юнит-тесты, не выходя с RuntimeError, если тест не пройден?

Привет Philipp

ответ

0

Поскольку я не слишком хорошо знаком с развитием Руби, то, что включает в себя Rake, я искал неправильный вопрос. Вместо того, чтобы искать: «как запустить модульный тест с помощью buildr», вопрос должен был быть «как запускать модульные тесты с помощью rake», потому что buildr - это своего рода расширенный Rake (похожий на «maven-ant-relationship») , Итак, все, что можно сделать в Rake, можно сделать и в buildr. Поэтому при хорошем ответе SO для запуска ruby unit tests в buildr находится here.

Кроме того, можно запустить RSpec's с Buildr, поэтому один из двух вариантов:

  1. установить project.test.using :rspec, что влечёт за собой использование JRuby, поэтому нужно установить JRUBY_HOME (в моем случае ~/.rvm/rubies/jruby-1.7.9/), или запустить buildr внутри jruby. В моем случае это замедлило выполнение теста, потому что каждый раз, когда нужно было запустить jvm.
  2. Или можно использовать rspec's rake task в this manner. Я выбираю этот метод, так как мои тесты выполняются намного быстрее без накладных расходов jvm.

n.b. как следует из ответа, я переключился на rspec.

Happy Testing/Speccing!