LoginSignup
0
0

More than 1 year has passed since last update.

RubyのテスティングフレームワークMinitestの使い方(初心者向け)

Posted at

分かりやすく解説するため、以下の流れで最小単位の使い方から、徐々に増やしていって解説します。
1. Minitestのテストファイル単体
1. Minitestのテストファイル + 同一ファイル内で作成したメソッド
1. Minitestのテストファイル + 別ファイルのメソッド

Minitestのテストファイル単体

テストコード単体での動作を見るために、RubyのStringクラスのメソッドであるchopメソッドを用いて、テストコードを作っていきます。

chop:文字列の最後の1文字を削除する、ただし\r\nの場合は\r\nを削除する

まずはテストコードを見ていきましょう。

sample_test.rb
require 'minitest/autorun'

class SampleTest < Minitest::Test
    def test_chop
        assert_equal "string", "string\r\n".chop
    end
end

解説です。
1. クラス名とファイル名は同一にしましょう。ただしクラス名はアッパーキャメルケース、ファイル名はスネークケースです。
1. メソッド名は必ず、testから始まるようにします。Minitestではテスト実行時に、testから始まるメソッドの実行を行うためです。
1. assert_equal 正しい値, 比較対象という記述で、テストしたいものを書きましょう。

このテストファイルを実行すると、結果は以下のようになります。
実行結果

qiita> ruby .\sample_test.rb
Run options: --seed 19064

# Running:

.

Finished in 0.004947s, 202.1468 runs/s, 202.1468 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips # < テスト結果 

最終行にテスト結果が表示されます。
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
実行1でテスト成功が1となります。

さて、ここまではRuby標準のメソッドを試しただけです。本来は開発者が実装したメソッドのテストを行う目的で使います。
次は、自分で作成したメソッドをテストします。

Minitestのテストファイル + 同一ファイル内で作成したメソッド

本来の使い方である、実装したメソッドをテストする方法です。
ここでは、3の倍数のときだけNabeatsuを返すnabeatsuメソッドを作成し、動作をテストします。
コードは以下のようになります。

サンプルコード

sample_test.rb
require 'minitest/autorun'

class SampleTest < Minitest::Test
    def test_chop
        assert_equal "string", "string\r\n".chop
    end
    def test_nabeatsu
        assert_equal "1", nabeatsu(1)
        assert_equal "2", nabeatsu(2)
        assert_equal "Nabeatsu", nabeatsu(3)
        assert_equal "4", nabeatsu(4)
        assert_equal "5", nabeatsu(5)
        assert_equal "Nabeatsu", nabeatsu(6)
    end
end

def nabeatsu(num)
    if num % 3 == 0
        'Nabeatsu'
    else
        num.to_s
    end
end

実行結果

qiita> ruby .\sample_test.rb
Run options: --seed 21318

# Running:

..

Finished in 0.005245s, 381.3155 runs/s, 1334.6044 assertions/s.

2 runs, 7 assertions, 0 failures, 0 errors, 0 skips

Minitestのテストファイル + 別ファイルのメソッド

さて、実際に使うのはこちらのパターンです。
先ほど作成したnabeatsuメソッドを、別ファイルに移動してテストしましょう。

サンプルコード nabeatsu.rb

nabeatsu.rb
def nabeatsu(num)
    if num % 3 == 0
        'Nabeatsu'
    else
        num.to_s
    end
end

サンプルコード sample_test.rb

sample_test.rb
require 'minitest/autorun'
require './lib/qiita/nabeatsu'

class SampleTest < Minitest::Test
    def test_chop
        assert_equal "string", "string\r\n".chop
    end
    def test_nabeatsu
        assert_equal "1", nabeatsu(1)
        assert_equal "2", nabeatsu(2)
        assert_equal "Nabeatsu", nabeatsu(3)
        assert_equal "4", nabeatsu(4)
        assert_equal "5", nabeatsu(5)
        assert_equal "Nabeatsu", nabeatsu(6)
    end
end

解説です。
1. nabeatsuメソッドは別ファイルに移動したので、requireでインポートしてくる必要があります。

そして、実行結果は以下になります。
実行結果

qiita> ruby sample_test.rb
Run options: --seed 32452

# Running:

..

Finished in 0.005215s, 383.5459 runs/s, 1342.4106 assertions/s.

2 runs, 7 assertions, 0 failures, 0 errors, 0 skips

これで、Minitestを使ったテストが最低限出来るようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0