我正在写一个rakefile,需要立即对几个测试dll运行mstest。我需要它只运行一次mstest,因为我只需要一个TRX文件。为了对多个测试dll运行mstest,我需要能够在同一个命令中添加几个/testcontainer:some.test.dll
实例。这是我目前的佣金任务:
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
如何获得所需的输出?
答案 0 :(得分: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