#概要
アウトプット用に、学習した内容を紹介していきます。
本日の内容はRubyにおける単体テストのためのライブラリ、minitestについてです。
#環境
Mac OS Mojave 10.14.6
Ruby 2.5.3
エディタ VSCode
#minitestとは
minitestとは上記の通り、単体テスト(プログラムの中で個々の機能が正しく動作しているか検証する)のためのライブラリです。
今回は'hello'という文字列を返すメソッドを持つ以下のクラスをテストしてみます。
class Hello
def hello
return 'hello'
end
end
これに対するテストプログラムは以下のようになります。
require 'minitest/autorun'
require_relative 'Hello.rb'
class TestHello < Minitest::Test
def setup
@hello = Hello.new
end
def test_hello
assert_equal 'hello', @hello.hello
end
end
require 'minitest/autorun'で、プログラム実行時にテストが自動実行されるようになります。
require_relativeでテスト対象のファイルを相対パスで指定します。今回は同じディレクトリにHello.rbを置いていたためファイル名のみとなっています。
またその下、TestHelloはMinitest::Testを継承したテストクラスです。ここにテストの内容などを記述していきます。
setupメソッドでは、テスト対象であるHelloクラスのインスタンスを作成します。
test_helloでは、assert_equal (自身が期待する実行結果) (テスト対象を実行して実際に返ってくる結果)
という形で記述します。これにより期待される値が返ってきたかどうか比較され、そのテスト結果が出力されます。
#結果
$ ruby TestHello.rb
Run options: --seed 42144
# Running:
.
Finished in 0.000922s, 1084.5987 runs/s, 1084.5987 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
無事成功しました。
ここでfailuresが出た場合は期待した結果と実行結果が異なっており、errorsが出た場合は例外が発生しています。