minitest version 5.11.0 has been released!
Published 2018-01-01 @ 14:27
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. :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.
Changes:
5.11.0 / 2018-01-01
-
2 major enhancements:
- Added Minitest::Result and Minitest::Result.from(runnable).
- Changed Minitest::Test to subclass Result and refactored methods up.
-
7 minor enhancements:
- Added –no-plugins and MT_NO_PLUGINS to bypass MT plugin autoloading. Helps with bad actors installed globally.
- Added bench_performance_{logarithmic,power} for spec-style benchmarks. (rickhull)
- Added deprecation warning for Runnable#marshal_dump.
- Minitest.run_one_method now checks for instance of Result, not exact same class.
- Minitest::Test.run returns a Result version of self, not self.
- ProgressReporter#prerecord now explicitly prints klass.name. Allows for fakers.
-
4 bug fixes:
- Object.stub no longer calls the passed block if stubbed with a callable.
- Object.stub now passes blocks down to the callable result.
- Pushed Minitest::Test#time & #time_it up to Runnable.
- Test nil equality directly in assert_equal. Fixes #679. (voxik)
- home: https://github.com/seattlerb/minitest
- bugs: https://github.com/seattlerb/minitest/issues
- rdoc: http://docs.seattlerb.org/minitest
- vim: https://github.com/sunaku/vim-ruby-minitest
- emacs: https://github.com/arthurnn/minitest-emacs