我的想法:
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 with
test:default and define a new task
test`。
所以你得到以下结果 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
不允许更改描述(这是可能的,但它将是对类的修改)。