Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Minitest + all the features you always wanted.

License

Notifications You must be signed in to change notification settings

grosser/maxitest

Repository files navigation

Minitest + all the features you always wanted. CI Gem Version

Failure

Features

  • Ctrl+c stops tests and prints failures
  • pastable rerun snippet for failures (disabled/integrated on rails 5)
  • multiple before & after blocks
  • before :all blocks
  • around blocks around { |t| Dir.chdir(...) { t.call } }
  • red-green output (disabled/integrated on rails 5)
  • full backtrace for errors and assertions with verbose (-v)
  • let!
  • let_all execute once for all tests in a class and it's subclasses
  • order_dependent! to make your tests run in given order
  • Maxitest.static_class_order = true no longer sort tests class/sub-classes in random order
  • context for more expression
  • pending { assert false } is skip when it fails, but fails when it passes
  • implicit subject via require 'maxitest/implicit_subject'
  • xit to skip test (also does not call setup or teardown)
  • with_env to change environment variables during test run
  • capture_stdout and capture_stderr to capture stdout or stderr but not both (like capture_io does)
  • require 'maxitest/timeout' to make hanging tests fail after Maxitest.timeout seconds
  • require 'maxitest/threads' fail tests that leave extra threads running
  • require 'maxitest/global_must' (before autorun) enable global must_* methods on all objects

Install

gem install maxitest

Usage

require "maxitest/autorun"
# ... normal minitest tests ...
describe MyClass do
 describe "#my_method" do
 it "passes" do
 _(MyClass.new.my_method).must_equal 1
 end
 end
end

pending

  • pending "need to fix" do to show why something is pending
  • pending "need to fix", if: ENV["CI"] do to only skip on CI (if something is supposed to work locally)

with_env

Use during test: with_env FOO: "bar do ... Use as around block: with_env FOO: "bar"

context

Use as alias for describe

describe "#my_method" do
 context "with bad state" do
 before { errors += 1 }
 it "fails" # ...
 end
end

capture_stdout / capture_stderr

output = capture_stdout { puts 1 }
_(output).must_equal "1\n"

minitest-reporters

If PR is not resolved, disable Interrupt handling with ENV["MAXITEST_NO_INTERRUPT"] = "true" to avoid "stack level too deep" errors.

Development

  • everything vendored into 1 gem to avoid dependency madness
  • tested via rspec to avoid messing up our own tests by accident
  • fixes should go back to the original libraries
  • restrictive minitest dependency so nothing breaks by accident
  • ruby >=3.0
  • rake bundle to update all vendored gems

Author

Michael Grosser
michael@grosser.it
License: MIT

About

Minitest + all the features you always wanted.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 7

Languages

AltStyle によって変換されたページ (->オリジナル) /