msfukuiの日記

おおまさのみみはそらのみみ。

minitest と test-unit の切り替え、使い分け

いかにも初心者っぽいはまり方をしたのでメモ。
rubyユニットテストフレームワークは、1.8系まで標準添付されていた test/unit が、開発が長らくストップしていたため、1.9 系以降になって、minitest/unit に置き換わっていて、後方互換性のため、test/unit を呼ぶと、minitest/unit を利用するようになっているらしい。
それとは別に、その後標準添付されなくなった test/unit も、その後開発が再開されて活発化しているらしい。
http://test-unit.rubyforge.org/index.html.ja


とのことで、どっち使うとよいんだー、というのは結局よくわからないところもあるのだけれども、切り替えて使い分ける方法が気になったので調べてみた。

  • minitest を使う場合

テストコードで普通に以下で読み込むと使える。

require 'test/unit'
...

または新しく作るなら本当はきっとちゃんと以下で書くべきだと思う。

require 'minitest/unit'
...

実行時は例えばこんな表示になる。(以下は minitest-4.7.0 の場合です。)

$ ruby test/test_XXXX.rb
Run options:

# Running tests:

....

Finished tests in 0.002001s, 1998.7008 tests/s, 18987.6580 assertions/s.

4 tests, 38 assertions, 0 failures, 0 errors, 0 skips

  • test/unit を使う場合

事前にインストールが必要。(以下は test-unit-2.5.4 の場合です。)

$ gem install test-unit
Fetching: test-unit-2.5.4.gem (100%)
Successfully installed test-unit-2.5.4
Installing ri documentation for test-unit-2.5.4
1 gem installed

テストコードで読み込むときは以下で。

require 'rubygems'
gem 'test-unit'
require 'test/unit'
...

実行時は例えばこんな表示になる。

$ ruby test/test_XXXX.rb
Loaded suite test/test_XXXX
Started
....

Finished in 0.0040026 seconds.

4 tests, 38 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

999.35 tests/s, 9493.83 assertions/s

デフォルトでハイライトされたりするところがちょっとうれしい。
ただ個人的にはちょっとどぎつい感じなので、リファレンスを参考に、以下の感じで colorschema の変更などをやっていたりしています。
以下のファイルを実行ディレクトリに置いておくといいみたいですね。

$ cat test-unit.yml
runner: console
console_options:
color_scheme: inverted
color_schemes:
inverted:
success:
name: green
bold: false
failure:
name: red
bold: true
error:
name: yellow
bold: true

機能強化されているみたいなのですが、ドキュメントはあまり充実していないみたいなので、使いこなすためにもコードをちゃんと読んでみようと思いました。


この辺の混乱とかみるとやっぱり ruby 関連の開発の敷居の高さを感じちゃいますね。
どうしても PHP 関連のあの異常なまでのドキュメントの充実ぶりと比べてしまう。
あと、ネットの情報だと古いものと新しいものが本当に混在していて、せめて利用しているバージョンと書いた時の日付は明記して欲しいな、と勝手なことを自戒を込めて思いました。
# test とかあんまり関係ない記事になってしまったなー。