RubyのUnitテスト系フレームワーク用のテストファイル名のパターンには test/test*.rb を使うのが良さそう
Rake::TestTask
Rake::TestTask
がデフォルトでこのパターンなので、これに則っておくことで設定を省略できて良さそう。今まで雰囲気で従っていた慣習に納得の行く理由が新しく発見できて良かった。「RubyのUnitテスト系フレームワーク」と呼んだけれど、正確には「Rubyのスクリプトとしてテストを実行するようなインターフェースを提供しているテストフレームワーク」と呼んだ方が良いかもしれない。
https://github.com/ruby/rake/blob/af15762f972a3f8322a9b5904d56fe2ff3dd8352/lib/rake/testtask.rb
例えば Petitest で Rake::TestTask
を使って rake test
で全てのテストが実行されるようにするには、例えば Rakefile に以下のような定義を行う。
require "rake/testtask"Rake::TestTask.new
実行する。
rake test
標準出力の出力結果。
TestRunner #test\_description #test\_full\_description TestSimple #test\_one\_plus\_one\_to\_be\_two TestTest #test\_assertion\_with\_truthy\_block\_to\_pass #test\_assertion\_with\_truthy\_value\_to\_pass Counts: 5 tests 5 passes 0 failures 0 skips Times: Started: 2017-03-26T15:02:46.401250+09:00 Finished: 2017-03-26T15:02:46.404074+09:00 Total: 0.002824s
テストのファイルパスとクラス名
RSpec is a testing DSL, Minitest is Ruby (seattlerb/minitestより) という言葉があるように 、こういうテスト用途で定義されるクラスも定数としてグローバルに参照できるように定義される訳なので、テストファイルも Ruby の他のプログラムと変わらないよという世界観の上では、当然クラス名の命名規則も普段 Ruby でコードを書くときと同じように統一しておくほうが良いと思う。上例では、以下のようなパターンの対応関係でテストのファイルパスとクラス名を割り当てることにしている。
- test/test_runner.rb ->
::TestRunner
- test/test_simple.rb ->
::TestTest
- test/test_test.rb ->
::TestTest