minitest version 5.16.0 has been released!
* home: <GitHub - minitest/minitest: minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking.>
* bugs: <Issues · minitest/minitest · GitHub>
* rdoc: <minitest-5.15.0 Documentation>
* vim: <GitHub - sunaku/vim-ruby-minitest: Vim highlighting & completion for MiniTest>
* emacs: <GitHub - arthurnn/minitest-emacs: A minitest mode for emacs>
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
frameworks...
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.
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.
Changes:
### 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