0
我有一個非常簡單的Rakefile
測試一枚紅寶石小寶石。它看起來像這樣:Can Rake可以在單獨的Ruby實例中運行每個測試嗎?
Rake::TestTask.new
task :default => :test
它調用兩個測試來定義具有相同名稱的常量。這導致的錯誤是由第二測試這樣的輸出:
warning: already initialized constant xxxxx
這樣做的原因是因爲耙執行所有單個Ruby的實例中的測試:
/usr/bin/ruby -I"lib" -I"/usr/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib" "/usr/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/rake_test_loader.rb" "test/test*.rb"
我應該如何規定每個測試應該在單獨的Ruby實例中運行?
我已經實現了這個,如下圖所示,但我不知道是否有更好的辦法,因爲這種解決方案不適用於大量測試很好地擴展。
Rake::TestTask.new(:one) { |t| t.test_files = %w(test/test_one.rb) }
Rake::TestTask.new(:two) { |t| t.test_files = %w(test/test_two.rb) }
task :default => [:one, :two]
也許更容易改變測試,這樣他們可以使用默認設置運行。將常量定義移動到幫助程序文件中或在測試的命名空間下定義它。 – Stefan 2014-11-24 11:14:57
對我來說,最簡單的事情是去與上面,因爲我只有兩個測試。不過,我希望這個問題能夠揭示出一個更好的方法,但以防萬一我錯過了一些微不足道的東西。這是一個一次性的場景,也有相同的獨立腳本的兩個版本,這是不值得重構只是爲了解決這一具體問題。該測試是在一個名爲'afsplitter'如果你有興趣的背景下,我已經穿上了RubyGems的寶石。 – starfry 2014-11-28 11:43:04
您應該使用一個測試套件,如[MINITEST(https://github.com/seattlerb/minitest) – Stefan 2014-11-28 12:03:45