class Minitest::TestTask
Minitest::TestTask
是一个 rake 助手,它在主测试任务的命名空间下生成多个 rake 任务。
task <name> :: the main test task task <name>:cmd :: prints the command to use task <name>:deps :: runs each test file by itself to find dependency errors task <name>:slow :: runs the tests and reports the slowest 25 tests.
示例
Minitest::TestTask.create
最基本和默认的设置。
Minitest::TestTask.create :my_tests
最基本/默认的设置,但带有自定义名称
Minitest::TestTask.create :unit do |t| t.test_globs = ["test/unit/**/*_test.rb"] t.warning = false end
自定义名称并且只运行单元测试。
注意:要将此任务连接到默认任务,请将其设置为依赖项
task default: :unit
属性
extra_args[RW]
传递给测试的额外参数。默认为空,但会由一些环境变量填充
- N (-n 标志)
-
要运行的测试的字符串或正则表达式。
- X (-e 标志)
-
要排除的测试的字符串或正则表达式。
- A (arg)
-
注入任意参数的快捷方式(例如 A=--help)。
请参阅 process_env
framework[RW]
加载框架的代码。默认为需要 minitest/autorun...
我为什么将其作为一个选项?
libs[RW]
要包含的额外库目录。默认为 %w[lib test .]。 还使用 $MT_LIB_EXTRAS,允许您为自定义运行动态覆盖/注入目录。
name[RW]
任务的名称和生成的其他任务的基本名称。
test_globs[RW]
用于查找测试文件的文件 glob。默认为在 test 目录下查找测试文件的合理值。
test_prelude[RW]
可选:在加载测试框架之前运行的额外 ruby 代码。
verbose[RW]
在命令运行时输出它们。默认为 Rake 的 trace
(-t 标志) 选项。
warning[RW]
打开 ruby 警告 (-w 标志)。默认为 true。
公共类方法
create(name = :test, &block) 点击以切换源代码
在 name
下创建多个面向测试的任务。接受一个可选的块来自定义变量。
# File minitest-5.25.4/lib/minitest/test_task.rb, line 50 def self.create name = :test, &block task = new name task.instance_eval(&block) if block task.process_env task.define task end
公共实例方法
make_test_cmd(globs = test_globs) 点击以切换源代码
生成测试命令行。
# File minitest-5.25.4/lib/minitest/test_task.rb, line 259 def make_test_cmd globs = test_globs tests = [] tests.concat Dir[*globs].sort.shuffle # TODO: SEED -> srand first? tests.map! { |f| %(require "#{f}") } runner = [] runner << test_prelude if test_prelude runner << framework runner.concat tests runner = runner.join "; " args = [] args << "-I#{libs.join File::PATH_SEPARATOR}" unless libs.empty? args << "-w" if warning args << "-e" args << "'#{runner}'" args << "--" args << extra_args.map(&:shellescape) args.join " " end
process_env() 点击以切换源代码
从环境中提取变量并将它们转换为命令行参数。请参阅 extra_args
。
环境变量
- MT_LIB_EXTRAS
-
用于自定义运行动态覆盖/注入的额外库。
- N
-
要运行的测试(字符串或/regexp/)。
- X
-
要排除的测试(字符串或/regexp/)。
- A
-
任何额外的参数。遵守 shell 引号。
已弃用
- TESTOPTS
-
对于参数传递,请使用
A
。 - N
-
对于并行测试,请使用
MT_CPU
。 - FILTER
-
与
TESTOPTS
相同。
# File minitest-5.25.4/lib/minitest/test_task.rb, line 144 def process_env warn "TESTOPTS is deprecated in Minitest::TestTask. Use A instead" if ENV["TESTOPTS"] warn "FILTER is deprecated in Minitest::TestTask. Use A instead" if ENV["FILTER"] warn "N is deprecated in Minitest::TestTask. Use MT_CPU instead" if ENV["N"] && ENV["N"].to_i > 0 lib_extras = (ENV["MT_LIB_EXTRAS"] || "").split File::PATH_SEPARATOR self.libs[0, 0] = lib_extras extra_args << "-n" << ENV["N"] if ENV["N"] extra_args << "-e" << ENV["X"] if ENV["X"] extra_args.concat Shellwords.split(ENV["TESTOPTS"]) if ENV["TESTOPTS"] extra_args.concat Shellwords.split(ENV["FILTER"]) if ENV["FILTER"] extra_args.concat Shellwords.split(ENV["A"]) if ENV["A"] ENV.delete "N" if ENV["N"] # TODO? RUBY_DEBUG = ENV["RUBY_DEBUG"] # TODO? ENV["RUBY_FLAGS"] extra_args.compact! end