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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

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

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラを現役エンジニアが解説【初心者向け】インブートキャンプの内容をもとに紹介しています。

 

 

田島悠介

今回は、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] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは実際に書いてみましょう。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では初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。