Blog Article
Minitestでテストを自動化する
最近、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は、コードが正しく動いているかを確認するための便利なツールです。テストを自動化することで、コードの品質を保ちながら開発を進めることができます。
最初は少し複雑に感じるかもしれませんが、使い方に慣れるととても役立つツールです。