简体   繁体   English

MiniTest - 仅重新运行失败的测试

[英]MiniTest - ReRun only failed tests

Is it possible to let minitest run only the failed tests via rake task? 是否可以通过rake任务让minitest只运行失败的测试?

Couldnt find anything in internet about this... With rspec or cucumber it worked.. Is there any possibility here? 无法在互联网上找到任何关于这个...用rspec或黄瓜它工作..这里有可能吗?

You can check out the guard-minitest gem. 你可以看看守卫最小的宝石。 I think that's what you are looking for. 我认为这就是你要找的东西。

The closest thing I could find is this plugin: 我能找到的最接近的是这个插件:

https://github.com/ivantsepp/minitest-rerun-options https://github.com/ivantsepp/minitest-rerun-options

It outputs command line options for failing tests like this: 它为失败的测试输出命令行选项,如下所示:

Rerun failed tests options:
--name TestExample#test_another_that_will_fail
--name TestExample#test_that_will_fail

so you can append them to your rake test command. 所以你可以将它们附加到你的rake test命令。

spring: 'bin/rails test' # option in the Guardfile will run only the changed files. spring: 'bin/rails test' Guardfile中的spring: 'bin/rails test' #选项只运行已更改的文件。

I have the following config in Guardfile. 我在Guardfile中有以下配置。 (The project had a mix of Unit & Spec style tests written) (该项目混合了单元和规范样式测试)

# all_on_start: false               # run all tests in group on startup, default: true
# all_after_pass: true              # run all tests in group after changed specs pass, default: false
# cli: '--test'                     # pass arbitrary Minitest CLI arguments, default: ''
# test_folders: ['tests']           # specify an array of paths that contain test files, default: %w[test spec]
# include: ['lib']                  # specify an array of include paths to the command that runs the tests
# test_file_patterns: %w[test_*.rb] # specify an array of patterns that test files must match in order to be run, default: %w[*_test.rb test_*.rb *_spec.rb]
# spring: true                      # enable spring support, default: false
# zeus: true                        # enable zeus support; default: false
# drb: true                         # enable DRb support, default: false
# bundler: false                    # don't use "bundle exec" to run the minitest command, default: true
# rubygems: true                    # require rubygems when running the minitest command (only if bundler is disabled), default: false
# env: {}                           # specify some environment variables to be set when the test command is invoked, default: {}
# all_env: {}                       # specify additional environment variables to be set when all tests are being run, default: false
# autorun: false                    # require 'minitest/autorun' automatically, default: true
options = {
  spring: 'bin/rails test', # NOTE: true = run all tests on every run
  all_on_start: false,
  all_after_pass: false
}
guard :minitest, options do
  # with Minitest::Unit
  watch(%r{^test/(.*)\/?test_(.*)\.rb$})
  watch(%r{^test/(.*)\/.+_test\.rb$})
  watch(%r{^lib/(.*/)?([^/]+)\.rb$})     { |m| "test/#{m[1]}test_#{m[2]}.rb" }
  watch(%r{^test/test_helper\.rb$})      { 'test' }
  watch(%r{^test/.+_test\.rb$})

  # watch('test/test_helper.rb')                        { 'test' }
  watch('config/routes.rb')                           { 'test/routing' }
  watch('app/controllers/application_controller.rb')  { 'test/controllers' }
  watch(%r{^app/(.+)\.rb$})                           { |m| "test/#{m[1]}_test.rb" }
  watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$})          { |m| "test/#{m[1]}#{m[2]}_test.rb" }
  watch(%r{^lib/(.+)\.rb$})                           { |m| "test/lib/#{m[1]}_test.rb" }
  watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["test/routing/#{m[1]}_routing_test.rb", "test/#{m[2]}s/#{m[1]}_#{m[2]}_test.rb", "test/system/#{m[1]}_test.rb"] }

  # with Minitest::Spec
  watch(%r{^spec/(.*)_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})         { |m| "spec/#{m[1]}_spec.rb" }
  watch(%r{^spec/spec_helper\.rb$}) { 'spec' }
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM