2015-05-05 40 views
0

我的微Ruby項目的測試工作在我的機器上,對私人虛擬機上運行的測試,但未能對特拉維斯CI bulid特拉維斯CI未能與**/* _ test.rb模式

項目同時使用rspec(+ rspec-given )和minitest

完全跟蹤的位置:https://travis-ci.org/equivalent/code_katas/jobs/61321482

$ bundle exec rake 
    MiniTest::Unit::TestCase is now Minitest::Test. From  /home/travis/.rvm/rubies/ruby 
    2.1.4/lib/ruby/2.1.0/test/unit/testcase.rb:8:in `<module:Unit>' 
    /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:676:in `<class:Runner>': undefined method `_run_suite' for class `Test::Unit::Runner' (NameError) 
    from /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:261:in `<module:Unit>' 
    from /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:15:in `<module:Test>' 
    from /home/travis/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/test/unit.rb:7:in `<top (required)>' 
    from /home/travis/build/equivalent/code_katas/vendor/bundle/ruby/2.1.0/gems/sorcerer-1.0.2/test/sorcerer/resource_test.rb:3:in `require' 
    #... 

的錯誤是不言自明MiniTest::Unit::TestCase is now Minitest::Test。這是通過使用test-unitsourcerspec-given依賴sorcerer(我的代碼是不是指test-unit在代碼的任何地方)

所以我很好奇的是,如果有人知道如何解決這個問題造成的。

就像我說的它工作在其他地方,除了特拉維斯CI

+0

你有'require'minitest/given''在你的spec_helper中嗎? –

+0

失敗了 - 請查看源代碼respec-given:https://github.com/jimweirich/rspec-given並查看它在哪裏使用'MiniTest :: Unit :: TestCase' - 叉回購,更改它'Minitest :: Test'並提出一個拉請求(並在此期間使用你的叉) –

+1

thx的答覆,我試圖添加/刪除'require'minitest/given'沒有工作。我圍繞着rspec給出的源代碼進行了挖掘,沒有提到'MiniTest :: Unit :: TestCase'。之所以會發生這種情況,是因爲Travis CI由於某種原因將'魔術師寶石測試評估爲我的應用程序的一部分。因爲我正在運行MiniTest> 5.0和巫師的Test :: Unit它們不兼容https://github.com/seattlerb/minitest/issues/283一個解決方案可能會鎖定到MiniTest 4.x但是我想使用最新。 (這可行,但不是在特拉維斯CI) – equivalent8

回答

0

問題是特拉維斯CI是與安裝寶石vendor文件夾

/home/travis/build/username/projectname/verdor


--deployment標誌克隆庫到 /home/travis/build/username/projectname,然後 bundle install

我的Rakefile正在使用測試模式**/*_test.rb因此在所有文件夾中運行測試,因此它正在加載ve RDOR目錄,並從其中有些是TestUnitMiniTest

解決方案相兼容的依賴關係(外部寶石)所有的測試是加載在Rake文件測試不pattern但:

Rake::TestTask.new(:test) do |t| 
    t.test_files = Dir['**/*_test.rb'].reject do |path| 
    path.include?('vendor') # tell travis CI to ignore vendor tests 
    end 
end 

類似申請RSpec的

RSpec::Core::RakeTask.new(:spec) do |t| 
    t.pattern = Dir.glob('**/*_spec.rb').reject do |path| 
    path.include?('vendor') # tell travis CI to ignore vendor tests 
    end 
    # t.rspec_opts = '--format documentation' 
end