Logo Image

Blog Article

Minitestでテストを自動化する

00

最近、Minitestでテスト自動化の方法について学習したので、まとめます。

Minitestとは?

Minitestは、Rubyプログラミング言語で書かれたコードが正しく動作しているかを自動で確認するためのツールです。これを使うと、コードにバグがないかどうかをテストしやすくなります。

プログラムを書いているときに、動作を確認するためにいちいち手動でチェックするのは大変です。Minitestを使うと、コードが期待通りに動くかを自動でチェックしてくれるので、効率的です。また、プログラムに変更を加えた後でも、以前の動作が正しいままかどうか確認できます。

テストコードの基本形

require 'minitest/autorun'

class SampleTest < Minitest::Test
  def test_sample
    assert_equal 'RUBY', 'ruby'.upcase
  end
end

ライブラリの読み込み

この行は、Minitestライブラリを読み込んで、自動的にテストを実行できるようにするコードです。

require 'minitest/autorun'

クラス定義

このクラスはMinitest::Testクラスを継承しています。Minitest::Testクラスを継承することで、このクラスはテストクラスとして機能し、テストメソッドを定義できます。

class SampleTest < Minitest::Test

テストメソッドの定義

test_sampleという名前のメソッドを定義しています。Minitestでは、test_で始まるメソッドはテストメソッドとして扱われます。

assert_equalは、期待される結果と実際の結果が等しいかどうかをチェックするアサーション (assertion) メソッドです。

  • 最初の引数 'RUBY' が期待される結果です。
  • 第二の引数 'ruby'.upcase が実際の結果で、これは文字列 'ruby' を大文字に変換したものです。
def test_sample
  assert_equal 'RUBY', 'ruby'.upcase
end

テストの実行と結果

このテストは、'ruby'.upcase'RUBY'と等しいかをチェックします。これは正しいので、このテストは成功します。

このコードを実行すると、Minitestが自動的にtest_sampleメソッドを実行し、結果を出力します。

簡単な例

次のように、2つの数を足し算するメソッドを作ったとします。

def add(a, b)
  a + b
end

これが正しく動くかをテストするために、Minitestを使ってテストを書きます。

ここで、assert_equal 4, add(2, 2) は、「add(2, 2) が 4 と等しいか」を確認しています。このテストを実行して、もし結果が期待通り(つまり4)ならテストは成功です。

require 'minitest/autorun'

class TestAdd < Minitest::Test
  def test_add
    assert_equal 4, add(2, 2)
  end
end

テストの確認

テストの実行結果を確認するには、テストファイルがあるディレクトリに移動して以下のコマンドを実行します。

ruby sample_test.rb

failuresとerrorsの件数が0であれば、テスト成功です。

Run options: --seed 57144

# Running:

.

Finished in 0.000290s, 3448.2773 runs/s, 3448.2773 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

まとめ

Minitestは、コードが正しく動いているかを確認するための便利なツールです。テストを自動化することで、コードの品質を保ちながら開発を進めることができます。

最初は少し複雑に感じるかもしれませんが、使い方に慣れるととても役立つツールです。