やり方
require 'minitest/autorun'して、Minitest::Testを継承したクラスを作れば良い。一例として、スマートフォンの料金を計算するクラスを考えてみた。
class Smartphone # attr_accessor :price, :tax, :service def initialize(price, tax, service) @price = price @tax = tax @service = service end def calc f = @price * @tax + @service return f.to_int end end require 'minitest/autorun' class SmartphoneMinitestTest < Minitest::Test def smart(price) return Smartphone.new(price, 1.1, 3).calc end def test_sample linemo_best_plan_main = smart(900 + 500) linemo_best_plan_sub = smart(900) assert_equal linemo_best_plan_main + linemo_best_plan_sub, 2536 end end
実行するとこんな感じになる
ruby "main.rb" Run options: --seed 2997 # Running: . Finished in 0.002367s, 422.4222 runs/s, 422.4222 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
自分のスマホ料金
LINEMOのベストプランが1回線目で900円 + 5分通話定額の500円、それを消費税とユニバーサルサービス料金3円をプラスした金額を計算する。2回線目は5分通話定額をつけていないので900円と消費税とユニバーサルサービス料金3円をプラスして、合計をアサーションする。結果2536円で正しくなる。
オート実行したくない場合
require 'minitest'して、Minitest.autorunを実行すれば同じ挙動となる。
require 'minitest' class MainMinitestTest < Minitest::Test def test_sample assert_equal 1, 1 end end def main Minitest.autorun end main if __FILE__ == $PROGRAM_NAME