Rubyでのテストの書き方
毎回忘れる。以下のスクリプトmain.rb
に対してテストを書くことを考える。
# main.rb class Main def self.find_sum_of_digits(n) # なっかすごい処理 end def run # なんかいろんな処理 end end if __FILE__ == $0 puts Main.new.run end
こんな感じでテストファイルを書く。
# main_test.rb require 'minitest/autorun' require './main' class MainTest < Minitest::Test def test_find_sum_of_digits_1 assert_equal Main.find_sum_of_digits(10), 1 end end
実行は以下のようにするとOK
$ ruby main_test.rb Run options: --seed 49321 # Running: . Finished in 0.000511s, 7827.7897 runs/s, 7827.7897 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
テスト対象のmain.rb
にて以下の記述をしていると、ファイルを直接実行した時のみ処理を実行する(今回の場合、puts Main.new.run
)ことができる。このため、テストファイルにてrequire
したときには処理が動かない。
if __FILE__ == $0 puts Main.new.run end