Help us understand the problem. What is going on with this article?

Minitestで書いたテストコードをRubyMine上で実行する手順

More than 1 year has passed since last update.

はじめに

この記事では「プロを目指す人のためのRuby入門」の読者向けに、Minitestで書いたテストコードをRubyMine上で実行する手順を紹介します。

実行環境

この記事は以下の環境で動作確認しています。

  • Ruby 2.4.1 (rbenvで新規にインストールした直後の状態)
  • RubyMine 2018.1.3
  • macOS 10.13.4

手順

1. RubyMineで新規プロジェクトを作成する

プロジェクトタイプはEmpty Projectで、Ruby SDKにRuby 2.4.1を指定します。

Screen Shot 2018-06-13 at 12.29.57.png

2. testディレクトリを作成する

「Projectペインを右クリック > New > Directory」でtestという名前のディレクトリを作成します。

Screen Shot 2018-06-13 at 12.33.33.png

ちなみに必須ではありませんが、testディレクトリを作ったら、「右クリック > Mark Directory as > Test Sources Root」としておくと、フォルダ(ディレクトリ)が緑色になって他のフォルダと識別しやすくなります。

Screen Shot 2018-06-13 at 12.35.35.png

3. テストファイルを作成する

testディレクトリを右クリック > New > Ruby Class」でSampleTestというクラスを作成します。

Screen Shot 2018-06-13 at 12.38.57.png

作成されたファイルの中身を以下のように書き換えます。

require 'minitest/autorun'

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

minitest/autorunが見つからない、というエラーが出た場合は、Preferencesを開き、プロジェクトの"Ruby SDK and Gems"を確認してください。

Screen Shot 2018-06-13 at 12.41.17.png

4. テストを実行してみる

sample_test.rbを右クリック > "Run 'Run test 'sample_tes...'"」を選択し、テストを実行してください。

Screen Shot 2018-06-13 at 12.44.56.png

うまくいけば、下のように"All Tests Passed"の表示が出るはずです。

Screen Shot 2018-06-13 at 12.46.12.png

5. FizzBuzzプログラムをテストしてみる

プログラム本体とテストコードが分かれているケースもテストしてみましょう。「プロを目指す人のためのRuby入門」の3.3.2項を参考にして、libディレクトリにfizz_buzz.rbを、testディレクトリにfizz_buzz_test.rbをそれぞれ作成します。

lib/fizz_buzz.rb
def fizz_buzz(n)
  if n % 15 == 0
    'Fizz Buzz'
  elsif n % 3 == 0
    'Fizz'
  elsif n % 5 == 0
    'Buzz'
  else
    n.to_s
  end
end
test/fizz_buzz_test.rb
require 'minitest/autorun'
require './lib/fizz_buzz'

class FizzBuzzTest < Minitest::Test
  def test_fizz_buzz
    assert_equal '1', fizz_buzz(1)
    assert_equal '2', fizz_buzz(2)
    assert_equal 'Fizz', fizz_buzz(3)
    assert_equal '4', fizz_buzz(4)
    assert_equal 'Buzz', fizz_buzz(5)
    assert_equal 'Fizz', fizz_buzz(6)
    assert_equal 'Fizz Buzz', fizz_buzz(15)
  end
end

RubyMine上では以下のように見えるはずです。

Screen Shot 2018-06-13 at 12.54.38.png

fizz_buzz_test.rbを右クリック > "Run 'Run test 'fizz_buzz_...'"」を選択し、テストを実行してください。

下のように"All Tests Passed"の表示が出れば成功です。

Screen Shot 2018-06-13 at 12.55.46.png

応用

デバッグ実行してみる

RubyMineを使えば、簡単にデバッグ実行することができます(デバッグ実行については「プロを目指す人のためのRuby入門」の第11章で紹介しています)。

デバッグ実行をする場合、コードを止めたい行をクリックし、ブレークポイントを設定します。
たとえば、以下の例ではfizz_buzz.rbの2行目にブレークポイントを設定しています。

Screen Shot 2018-06-13 at 13.01.57.png

ブレークポイントを付けたら、「fizz_buzz_test.rbを右クリック > "Debug 'Run test 'fizz_buzz_...'"」を選択して、テストを実行します。

Screen Shot 2018-06-13 at 13.03.27.png

デバッグに必要なgemが不足している場合は以下のようなダイアログが表示されるので、Yesを選択してください。

Screen Shot 2018-06-13 at 12.57.50.png

gemがインストールされると、次のようにブレークポイントを設定した場所でプログラムの実行が停止します。

Screen Shot 2018-06-13 at 12.58.27.png

ステップ実行のためのコマンド(ステップオーバーやステップイン、ステップアウト)は以下のアイコンで表示されます。

Screen Shot 2018-06-13 at 13.07.56.png

Interactive consoleを使うと、変数の値やメソッドの戻り値を確認することができます。

Screen Shot 2018-06-13 at 13.10.07.png

RubyMineのデバッグ機能は非常に多機能なので、詳しい説明は以下のヘルプページを参考にしてください。

デバッグ - 公式ヘルプ | RubyMine

まとめ

この記事では「プロを目指す人のためのRuby入門」の読者向けに、、Minitestで書いたテストコードをRubyMine上で実行する手順を紹介しました。
RubyMineは有料のIDEですが、うまく使えばRuby初心者の方が効率良くRubyを習得するための強力なツールになります。
ぜひRubyMineの導入を検討してみてください。

jnchito
SIer、社内SEを経て、ソニックガーデンに合流したプログラマ。 「プロを目指す人のためのRuby入門」の著者。 http://gihyo.jp/book/2017/978-4-7741-9397-7 および「Everyday Rails - RSpecによるRailsテスト入門」の翻訳者。 https://leanpub.com/everydayrailsrspec-jp
https://blog.jnito.com/
sonicgarden
「お客様に無駄遣いをさせない受託開発」と「習慣を変えるソフトウェアのサービス」に取り組んでいるソフトウェア企業
http://www.sonicgarden.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away