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 是可接受的)。如果同时使用 patterntest_files,则测试文件列表是两者的并集。

# File rake-13.2.1/lib/rake/testtask.rb, line 81
def test_files=(list)
  @test_files = list
end