オーダーメイドコース
icon
icon

Rubyのテスト用フレームワークminitestの使い方を現役エンジニアが解説【初心者向け】

初心者向けにRubyのテスト用フレームワークminitestの使い方について解説しています。テストフレームワークminitestを使ったテストコードの書き方、結果の見かたをサンプルで確認し、テストの実行方法を覚えましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Rubyのテスト用フレームワークminitestの使い方について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

テスト用フレームワークminitestの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

minitestとは

minitestとはテストを自動化するためのテスト用のフレームワークです。

minitestはRubyと一緒にインストールしてありますので、特にセットアップなどは必要なく、またRuby on Railsにおいてもデフォルトで入っているテストフレームワークであります。Ruby on Railsを学習する予定の方でしたら学習効率もよくなります。

ここでなぜminitestなどのテストフレームワークが必要なのか考えてみましょう。

 

Webアプリケーションの開発の現場ではソースコードを書くと、実際にブラウザにどのように表示されるかを確認する作業があります。しかし、このブラウザでの目視での確認作業は十分とは言えません。なぜなら手動でのテストは、面倒で煩雑でありバグを見落とす可能性が高いからなのです。

そこで、minitestなどのテストフレームを使いテストコードを書き、テスト作業を自動化するという方法が迅速かつ確実な方法だと言えます。

 

minitestの使い方

minitestでテストコードの書き方について説明しましょう。まず、minitestのライブラリーを読み込むことから始めます。すでにRubyにインストールされていますので以下のコードを書くだけでOKです。

 

require 'minitest/autorun'

 

次にテストコード用のクラスを書きます。クラス名にはTestという文字を入れるとテストコードであるとわかりやすいので慣習的にもTestを入れていることが多いです。

こちらのクラスはMinitest::Testクラスを継承していますから、クラス名 < Minitest::Testと書きます。

 

class SampleTest < Minitest::Test
  def   test_train
    assert_equal 2, 1 + 1
  end
end

 

assert_equalは検証メソッドです。以下のような使い方となります。

 

assert_equal  期待値、テスト式

 

ここで期待値とテスト式の結果が同じであればテスト成功となります。

 

Run options: --seed 49801

# Running:

.

Finished in 0.002820s, 354.6467 runs/s, 354.6467 assertions/s.

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

 

1 runs は実行したテストメソッドの件数です。1 assertions は実行した検証メソッドの件数です。failure errorが0ならすべてのテストが成功したこととなります。

 

今回のテストは成功したと言えるでしょう。

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは実際に書いてみましょう。train.rbに以下のコードを書いてみてください。

 

def train(n)
  if n == 1
    "vse"
  elsif n == 2
    "mse"
  elsif n == 3
    "gse"
  elsif n == 4
    "exe"
  else
    "exea"
  end
end

require 'minitest/autorun'

class TrainTest < Minitest::Test
  def test_train
    assert_equal 'vse', train(1)
    assert_equal 'mse', train(2)
    assert_equal 'gse', train(3)
    assert_equal 'exe', train(4)
    assert_equal 'exea', train(100)
  end
end
ruby.train.rb で実行する。
#=>

Run options: --seed 23211

# Running:

.

Finished in 0.001640s, 609.5981 runs/s, 3047.9906 assertions/s.

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

 

trainメソッドの検証ですが、すべて成功していますね。検証メソッドは以下もありますのでご参考までに。

 

assert_nil  式

# 式がnilなら成功

 

assert_empty  式

#式が空であるなら成功(空は文字列、配列、ハッシュ)

 

assert_macth パターン、文字列

#文字列が正規表現のパターンにマッチすれば成功

 

assert_includes  配列、 変数 

#変数が配列に含まれれば成功

 

筆者プロフィール

町田 耕

学生時代は会計学専攻。塾講師勤務を経て、企業のCFOとして会社経営に携わる。

会社経営から一線を退いた後、インフラエンジニアの妻の勧めでプログラミングを独学で始め、プログラミングセミナーなど転々としながら、開発案件に携わるようになる。

現在、フリーランスとして活動しながらテックアカデミーのメンターも勤めている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。