2011-01-07 28 views
0

我正在寫一個rakefile,並且需要一次運行幾個測試DLL的mstest。我需要它只運行一次mstest,因爲我只需要一個TRX文件。爲了針對多個測試DLL運行mstest,我需要能夠在同一個命令中添加/testcontainer:some.test.dll的多個實例。這是我目前的耙子任務:如何從Rake的FileList格式化一個新的字符串?

task :tests do 
    testDlls = FileList.new("#{BUILD_PATH}/*.Specs.dll") 
sh "#{MSTEST_PATH} /testcontainer:#{testDlls}"  
end 

舉一個例子,testDlls有test1.dll,test2.dll和test3.dll。上述任務輸出:

c:\msbuild\msbuild.exe /testcontainer:test1.dll test2.dll test3.dll 

我需要的是:

c:\msbuild\msbuild.exe /testcontainer:test1.dll /testcontainer:test2.dll /testcontainer:test3.dll 

我怎樣才能得到我想要的輸出?

回答

2

這應該工作:

require 'shellwords' 
task :tests do 
    testDlls = FileList.new("#{BUILD_PATH}/*.Specs.dll") 
    ary = Shellwords.shellwords(testDlls.to_s) 
    sh "#{MSTEST_PATH} #{ary.map {|dll| '/testcontainer:' + dll}.join(' ')"  
end 
+0

它看起來很有希望,但我發現了另一個錯誤。你的第四行拋出: 未定義的方法'掃描'爲# C:/Ruby192/lib/ruby/1.9.1/shellwords.rb:35:in'shellsplit' –

+0

嘗試添加'.to_s'到'testDlls'。 (編輯) –

+0

謝謝!這使它工作。我參加比賽。 –

相關問題