class Rake::TestTask
创建一个运行一组测试的任务。
示例
require "rake/testtask" Rake::TestTask.new do |t| t.libs << "test" t.test_files = FileList['test/test*.rb'] t.verbose = true end
如果使用 “TEST=filename” 命令行选项调用 rake,那么测试文件列表将被覆盖,仅包含命令行中指定的文件名。这提供了一种轻松运行单个测试的方法。
如果使用 “TESTOPTS=options” 命令行选项调用 rake,那么给定的选项将通过 ‘–’ 传递给测试进程。这允许将 Test::Unit 选项传递给测试套件。
示例
rake test # run tests normally rake test TEST=just_one_file.rb # run just one test file. rake test TESTOPTS="-v" # run in verbose mode rake test TESTOPTS="--runner=fox" # use the fox test runner
属性
deps[RW]
Task
前置条件。
description[RW]
测试任务的描述。(默认为 ‘运行测试’)
libs[RW]
在运行测试之前添加到 $LOAD_PATH 的目录列表。(默认为 ‘lib’)
loader[RW]
要使用的测试加载器样式。选项包括:
-
:rake – Rake 提供的测试加载脚本(默认)。
-
:testrb – Ruby 提供的测试加载脚本。
-
:direct – 使用命令行加载器加载测试。
name[RW]
测试任务的名称。(默认为 :test)
options[RW]
传递给测试套件的测试选项。命令行上的显式 TESTOPTS=opts 将覆盖此选项。(默认为 NONE)
pattern[RW]
用于匹配测试文件的 Glob 模式。(默认为 ‘test/test*.rb’)
ruby_opts[RW]
在运行测试加载器时传递给 ruby 的命令行选项数组。
verbose[RW]
如果需要详细的测试输出,则为 True。(默认为 false)
warning[RW]
请求在设置警告标志的情况下运行测试。例如,warning=true 意味着使用 “ruby -w” 来运行测试。(默认为 true)
公共类方法
new(name=:test) { |self| ... } 点击以切换源
创建一个测试任务。
# File rake-13.2.1/lib/rake/testtask.rb, line 86 def initialize(name=:test) @name = name @libs = ["lib"] @pattern = nil @options = nil @test_files = nil @verbose = false @warning = true @loader = :rake @ruby_opts = [] @description = "Run tests" + (@name == :test ? "" : " for #{@name}") @deps = [] if @name.is_a?(Hash) @deps = @name.values.first @name = @name.keys.first end yield self if block_given? @pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil? define end
公共实例方法
define() 点击以切换源
创建由此任务库定义的任务。
# File rake-13.2.1/lib/rake/testtask.rb, line 108 def define desc @description task @name => Array(deps) do FileUtilsExt.verbose(@verbose) do puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \ ", etc. to runners." if ARGV.include? "--verbose" args = "#{ruby_opts_string} #{run_code} " + "#{file_list_string} #{option_list}" ruby args do |ok, status| if !ok && status.respond_to?(:signaled?) && status.signaled? raise SignalException.new(status.termsig) elsif !ok status = "Command failed with status (#{status.exitstatus})" details = ": [ruby #{args}]" message = if Rake.application.options.trace or @verbose status + details else status end fail message end end end end self end
test_files=(list) 点击以切换源
显式定义要包含在测试中的测试文件列表。list
预计是文件名数组(FileList
是可接受的)。如果同时使用 pattern
和 test_files
,则测试文件列表是两者的并集。
# File rake-13.2.1/lib/rake/testtask.rb, line 81 def test_files=(list) @test_files = list end