Skip to main content

custom_minitest_plugin

🧪 Build a Custom Minitest Plugin​

Minitest plugins let you hook into the test runner lifecycle and add custom CLI flags, reporters, or behaviors. Create a file under minitest/plugins and define Minitest.plugin_<name>_init and Minitest.plugin_<name>_options methods to register your plugin.

# minitest/plugins/trace_plugin.rb
require 'minitest'

def Minitest.plugin_trace_plugin_options(opts, _)
opts.on "--trace-tests", "Print each test name before running" do
@trace_tests = true
end
end

def Minitest.plugin_trace_plugin_init(options)
return unless options[:trace_tests]
Minitest::Test.prepend(Module.new do
def before_setup
puts "Running: #{self.class}##{name}"
super
end
end)
end

Now you can run:

$ ruby -rminitest/autorun test/**/*_test.rb -- --trace-tests