ExercismでRubyの演習をテストする方法を学びましょう
テストは次のコマンドで実行します。
$ ruby hamming_test.rb
最初のテストだけが実行され、残りはすべてskipメソッドで保留にされています。テストが1つ通るたびに、次のskipを削除するかコメントアウトしましょう。
skipについてskipメソッドは、テストスイートにそのテストを実行しないよう指示します。これは、まだ実装していない機能のテストを実行しないようにして、今取り組んでいる部分に集中するためによく使われます。
テスト実行のサマリーには、スキップされたテストの数が一覧で表示されます。演習を終える前に、すべてのskipを無効にしておきましょう。
色を付けたい場合は、次のコマンドでテストを実行します。
$ ruby hamming_test.rb -p
テスト名を表示したい場合は、次のコマンドでテストを実行します。
$ ruby hamming_tests.rb -v
1つのテストだけを実行したい場合は、正規表現スタイルのマッチングで1つ、またはグループを指定できます。
$ ruby hamming_tests.rb -n /empty/
オプションを組み合わせることもできます。
skipを無効にする実行したい個々のテストやテストのグループを選べるようになったので、すべてのskipを無効にしたくなるかもしれません。
Rubyではメソッドを上書きできるという性質を利用して、次のコード行を追加するとします。
def skip ; end
これをハミングのテストファイルで次のように書きます。
class HammingTest < Minitest::Test
def skip ; end
def test_identical_strands
そうすると、すべてのskipはそのまま評価されつつ、テストは実行されるようになります。
もちろん、その都度すべてのファイルを編集するのは面倒です。そこで、演習を作るときに私たちがしたように、skipの定義を書いたファイルを作り、必要なときにそれをライブラリとして読み込むという手があります。
私たちは「ヘルパー」的なものを入れておくlibフォルダーを作りました。その中身は次のようになっています。
require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
# ruby -I../lib -rdisable_skip <filename_test.rb>
module Minitest
class Test
def skip(_msg='', _bt=caller)
end
end
end
使い方の説明はこのファイルの内容の中にコメントとして書かれていて、ファイルの内容は完成した状態のものです。