Ruby での Test::Unit や MiniTest::Unit を使った複数のファイルのテスト

Perl で複数のテストを実行する場合は prove コマンドがあるけれど、Ruby の場合はどうするのがいいんだろうなー。 と思って調べてみました。

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック』 によると、Rake::TestTask を使うのが良いようです。 以下のような rakefile を書いて、あとは rake test で実行、と。

# coding: UTF-8

require 'rake/testtask'

task :default => [:test]

Rake::TestTask.new do |test|
  # $LOAD_PATH に追加するパス (デフォルトで 'lib' は入っている)
  test.libs << 'test'
  # テスト対象ファイルの指定
  test.test_files = Dir[ 'test/**/test_*.rb' ]
  test.verbose = true
end

このときのフォルダ構成は以下のようになります。

Project --+- lib -----+- ...
          |           +- ...
          |
          +- test ----+- test_main.rb
          |           +- test_aaa.rb
          |           +- ...
          |
          +- rakefile

Project フォルダにいる状態で、以下のようにコマンドをたたくと、test ディレクトリ内の "test_" ではじまるファイル名のファイルが全て実行されます。

$ rake test