Rubyのテストフレームワークを使ってみました。
テストを書くことについて
前提として、テストを書くことは非常に重要で、 環境が壊れていないこと、コードが記載通りに実行できることの確認をすることができます。環境が壊れていなくても、
バージョンの違いなどによって、動くはずのコードが実は動いていない!!など、起こり得ることです。
基本的に、以下の順序で行うものだと学びました。
① 意図的にエラーが起こることを確かめる(異常系)
② ①を変更して、正常に動作することを確かめる(正常系)
今回は、RubyのテストフレームワークのMinitestについてです。
上記の、①、②の順序でテストを実行してみます。
テストの実行と解説
コードをまずは書いてみましょう。
require 'minitest/autorun'
class RubyTest < Minitest::Test
def test_ruby
assert_equal 1, 1 + 1
end
end
まずは、以下でMinitestライブラリを呼び出します。
require 'minitest/autorun'
次に、以下の関数内を言語化すると、
想定では、結果が1になります。その命令は、1 + 1と記載しています。
なので、適切にfailureが出ることの確認をします。
これは、よく異常系とか呼ばれるものですね。
def test_ruby
assert_equal 1, 1 + 1
end
では、実行してみましょう。
異常系テストの実行
(base) yusuke@mbp training % ruby test01.rbRun options: --seed 43079
#Running:
F
Failure:
RubyTest#test_ruby [/Users/yusuke/ruby/training/Ruby_Pro/minitest.rb:5]:
Expected: 1
Actual: 2
rails test Users/yusuke/ruby/training/Ruby_Pro/minitest.rb:4
Finished in 0.001410s, 709.2198 runs/s, 709.2198 assertions/s.
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips
1つの実行で、1つのfailure(失敗)と出ているので、想定通りです。
正常系テストの実行
次に、想定結果を2として、1 + 1を実行します。
これで、成功となれば、適切にコードが動くことを証明できます。
class RubyTest < Minitest::Test
def test_ruby
assert_equal 2, 1 + 1
end
end
では、実行してみます。
(base) yusuke@mbp training % ruby test01.rb
Run options: --seed 27994
#Running:
.
Finished in 0.000966s, 1035.1973 runs/s, 1035.1973 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
今回は、1回の実行で、1つの成功と表示がされました。
想定通りに動きましたね。
今後、少しずつテストマスターを目指していきます。