Я генерирую тестовые задачи динамически на основе существующих тестовых файлов в Rakefile. Предположим, у вас есть различные файлы модульного теста, названные в соответствии с шаблоном test_
. Итак, что я делаю, это создаю задачу, названную по имени файла внутри пространства имен test.
С помощью приведенного ниже кода я могу затем вызвать все тесты с помощью rake test:
require 'rake/testtask'
task :default => 'test:all'
namespace :test do
desc "Run all tests"
Rake::TestTask.new(:all) do |t|
t.test_files = FileList['test_*.rb']
end
FileList['test_*.rb'].each do |task|
name = task.gsub(/test_|\.rb\z/, '')
desc "Run #{name} tests"
Rake::TestTask.new(:"#{name}") do |t|
t.pattern = task
end
end
end
Приведенный выше код работает, но кажется, что его слишком много для генерации простой задачи.
И я до сих пор не придумал способ вывести текст описания на консоль, например устанавливает «Выполняется # {name} tests:»
Есть ли более элегантный способ, чем описанный выше метод?
EDIT : На самом деле я ожидал получить альтернативу циклу для динамического определения задач, но я полагаю, что rake lib не предоставляет для этого никакого помощника, поэтому я застрял в цикле.