🕷 software releases

by ryan davis


minitest version 5.16.0 has been released!

Published 2022-06-14 @ 20:01

minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking.

"I had a class with Jim Weirich on testing last week and we were
 allowed to choose our testing frameworks. Kirk Haines and I were
 paired up and we cracked open the code for a few test

 I MUST say that minitest is *very* readable / understandable
 compared to the 'other two' options we looked at. Nicely done and
 thank you for helping us keep our mental sanity."

-- Wayne E. Seguin

minitest/test is a small and incredibly fast unit testing framework. It provides a rich set of assertions to make your tests clean and readable.

minitest/spec is a functionally complete spec engine. It hooks onto minitest/test and seamlessly bridges test assertions over to spec expectations.

minitest/benchmark is an awesome way to assert the performance of your algorithms in a repeatable manner. Now you can assert that your newb co-worker doesn’t replace your linear algorithm with an exponential one!

minitest/mock by Steven Baker, is a beautifully tiny mock (and stub) object framework.

minitest/pride shows pride in testing and adds coloring to your test output. I guess it is an example of how to write IO pipes too. :P

minitest/test is meant to have a clean implementation for language implementors that need a minimal set of methods to bootstrap a working test suite. For example, there is no magic involved for test-case discovery.

"Again, I can't praise enough the idea of a testing/specing
 framework that I can actually read in full in one sitting!"

-- Piotr Szotkowski

Comparing to rspec:

rspec is a testing DSL. minitest is ruby.

-- Adam Hawkins, "Bow Before MiniTest"

minitest doesn’t reinvent anything that ruby already provides, like: classes, modules, inheritance, methods. This means you only have to learn ruby to use minitest and all of your regular OO practices like extract-method refactorings still apply.


5.16.0 / 2022-06-14

  • 2 major enhancements:

    • Added Minitest::TestTask.
    • Dropping ruby 2.2 - 2.5. 2.6 is DTM soon too.
  • 11 minor enhancements:

    • Added –show-skips option to show skips at end of run but not require –verbose. (MSP-Greg)
    • Added Minitest.seed, the random seed used by the run.
    • Calling srand Minitest.seed before all shuffles to ensure determinism.
    • Extended #stub to handle kwargs for both block and call args. (SampsonCrowley)
    • Extended Mock#__call to display kwargs.
    • Extended Mock#expect to record kwargs.
    • Extended Mock#method_missing to take kwargs & compare them against expected.
    • Mock#method_missing displays better errors on arity mismatch.
    • Removed minor optimization removing empty suites before run.
    • Simplified test randomization (test order will change even with fixed seed).
    • assert_match now returns the MatchData on success. (Nakilon)
  • 3 bug fixes:

    • (Re)Fixed marshalling of exceptions, neutering them in 2 passes.
    • Fixed more problems with rdoc.
    • Had to patch up mock and stub to deal with <=2.7 kwargs oddities
  • home: https://github.com/seattlerb/minitest
  • bugs: https://github.com/seattlerb/minitest/issues
  • rdoc: https://docs.seattlerb.org/minitest
  • vim: https://github.com/sunaku/vim-ruby-minitest
  • emacs: https://github.com/arthurnn/minitest-emacs