我的想法:
namespace :test do
FileList['test_*.rb'].each do |rakefile|
name = rakefile.gsub(/test_|\.rb\z/, '')
desc "Run #{name} tests"
task name do
require_relative rakefile
end
#Define default task for :test
task :default => name
end
end
desc "Run all tests"
task :test => 'test:default'
task :default => 'test'
但我不确定Rake::TestTask.new用require_relative.
我的解决方案包含另一个更改:我替换task了 test:all withtest:default and define a new tasktest`。
所以你得到以下结果 rake -T:
rake test # Run all tests
rake test:1 # Run 1 tests
rake test:2 # Run 2 tests
如果你想运行所有的测试,你需要rake test,具体的测试可以用rake test:<name>
你也可以通过Rake::TestTask.new
require 'rake/testtask'
namespace :test do
FileList['test_*.rb'].each do |rakefile|
name = rakefile.gsub(/test_|\.rb\z/, '')
Rake::TestTask.new(:"#{name}") do |t|
t.pattern = rakefile
end
#Define default task for :test
task :default => name
end
end
desc "Run all tests"
task :test => 'test:default'
task :default => 'test'
我得到rake -T:
rake test # Run all tests
rake test:1 # Run tests for 1
rake test:2 # Run tests for 2
生成描述。
您可以添加:
desc 'Alternative description'
task name
然后你得到:
rake test # Run all tests
rake test:1 # Run tests for 1 / Alternative description
rake test:2 # Run tests for 2 / Alternative description
如果你想改变你可以添加的文本
#replace description
Rake.application[name].comment.replace("Run #{name} tests")
之后end的Rake::TestTask.new。那是丑陋的代码,但Rake::TestTask不允许更改描述(这是可能的,但它将是对类的修改)。