LoginSignup
1
0

More than 1 year has passed since last update.

Rubyのテスト(Minitest)を初めて使ってみた

Last updated at Posted at 2022-04-23

Rubyのテストフレームワークを使ってみました。

テストを書くことについて

前提として、テストを書くことは非常に重要で、 環境が壊れていないこと、コードが記載通りに実行できることの確認をすることができます。

環境が壊れていなくても、
バージョンの違いなどによって、動くはずのコードが実は動いていない!!など、起こり得ることです。

基本的に、以下の順序で行うものだと学びました。
① 意図的にエラーが起こることを確かめる(異常系)
② ①を変更して、正常に動作することを確かめる(正常系)

今回は、RubyのテストフレームワークのMinitestについてです。
上記の、①、②の順序でテストを実行してみます。

テストの実行と解説

コードをまずは書いてみましょう。

require 'minitest/autorun' 

class RubyTest < Minitest::Test
  def test_ruby
    assert_equal 1, 1 + 1
  end
end

まずは、以下でMinitestライブラリを呼び出します。
require 'minitest/autorun'

次に、以下の関数内を言語化すると、
想定では、結果が1になります。その命令は、1 + 1と記載しています。

なので、適切にfailureが出ることの確認をします。
これは、よく異常系とか呼ばれるものですね。

  def test_ruby
    assert_equal 1, 1 + 1
  end

では、実行してみましょう。

異常系テストの実行

(base) yusuke@mbp training % ruby test01.rb

Run options: --seed 43079

#Running:

F

Failure:
RubyTest#test_ruby [/Users/yusuke/ruby/training/Ruby_Pro/minitest.rb:5]:
Expected: 1
Actual: 2

rails test Users/yusuke/ruby/training/Ruby_Pro/minitest.rb:4

Finished in 0.001410s, 709.2198 runs/s, 709.2198 assertions/s.
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips

1つの実行で、1つのfailure(失敗)と出ているので、想定通りです。

正常系テストの実行

次に、想定結果を2として、1 + 1を実行します。
これで、成功となれば、適切にコードが動くことを証明できます。

class RubyTest < Minitest::Test
  def test_ruby
    assert_equal 2, 1 + 1
  end
end

では、実行してみます。
(base) yusuke@mbp training % ruby test01.rb

Run options: --seed 27994

#Running:

.

Finished in 0.000966s, 1035.1973 runs/s, 1035.1973 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

今回は、1回の実行で、1つの成功と表示がされました。
想定通りに動きましたね。

今後、少しずつテストマスターを目指していきます。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0