Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > minitest/unitライブラリ

library minitest/unit

要約

ユニットテストを行うためのライブラリです。

使い方

minitest/unit は以下のように使います。

テスト対象のソース (foo.rb) を用意します。

class Foo
  def foo
    "foo"
  end
  def bar
    "foo"
  end
end

次にユニットテスト (test_foo.rb) を書きます。 テストを実行するメソッド (テストメソッド) の名前はすべて "test" で始まる必要があります。 テストメソッドが実行される前には setup メソッドが必ず実行されます。 テストメソッドが実行された後には teardown メソッドが必ず実行されます。

minitest/unitKernel.#require しただけではテストが自動実行されません。

require 'minitest/unit'
require 'foo'

MiniTest::Unit.autorun

class TestFoo < MiniTest::Unit::TestCase
  def setup
    @foo = Foo.new
  end
  # teardown はあまり使わない
  def teardown
    @foo = nil
  end

  def test_foo
    assert_equal "foo", @foo.foo
  end

  def test_bar
    assert_equal "bar", @foo.bar
  end
end

または MiniTest::Unit.autorun を省略して以下のように書くこともできます。

require 'minitest/unit'
require 'minitest/autorun'
require 'foo'
# 以下略

テストを実行するには上で用意した test_foo.rb を実行します。 デフォルトではすべてのテストが実行されます。

$ ruby test_foo.rb
Loaded suite test_foo
Started
F.
Finished in 0.000940 seconds.

  1) Failure:
test_bar(TestFoo) [test_foo.rb:20]:
Expected "bar", not "foo".

2 tests, 2 assertions, 1 failures, 0 errors, 0 skips

test_bar だけテストしたい場合は以下のようなオプションを与えます。

$ ruby test_foo.rb -n test_bar
Loaded suite test_foo
Started
F
Finished in 0.000820 seconds.

  1) Failure:
test_bar(TestFoo) [test_foo.rb:20]:
Expected "bar", not "foo".

1 tests, 1 assertions, 1 failures, 0 errors, 0 skips

コンソールを使った testrunner のみ提供されています。 またヘルプを表示することもできません。

使用可能なオプション

-v

詳細を表示します。

-n, --name

指定されたテストメソッドを実行します。テストメソッドの指定に正規表現も使えます。

いつテストは実行されるか

上述のとおり、MiniTest::Unit.autorun や require 'minitest/autorun' をテストコードに 明示的に書かなかった場合は、単にそのテストファイルを実行しても何も起こりません。

Error と Failure と Skip の違い

Error

テストメソッド実行中に例外が発生した。

Failure

アサーションに失敗した。

Skip

テストメソッド内で MiniTest::Assertions#skip を呼び出した。

test/unit からの移行

細かい違いはいくつかありますが、移行のためにしなければならないことは特にありません。 require 'test/unit' している場合は互換レイヤーが読み込まれ以前の test/unit との互換性が確保されます。

そうではなくて require 'minitest/unit' する場合は、テストクラスの定義時に親クラスを MiniTest::Unit::TestCase にしなければなりません。

クラス

class MiniTest::Unit

ユニットテストで使用する様々なメソッドを定義しているクラスです。

class MiniTest::Unit::TestCase

テストの基本単位(あるいは「テスト本体」)を表すクラスです。

モジュール

module MiniTest

minitest/unit で使用するクラスやモジュールを定義しているモジュールです。

module MiniTest::Assertions

各種 assert メソッドを提供します。

例外クラス

class MiniTest::Assertion

アサーションに失敗した時に発生する例外です。

  class MiniTest::Skip

MiniTest::Assertions#skip を呼び出した時に発生する例外です。

サブライブラリ

minitest/autorun

このファイルを Kernel.#require するとテストが test/unit と同じように自動実行されます。

library minitest/unit