テストフレームワーク(RSpec, MiniTest)

Rubyには、コードの正しさを検証し保守性を高めるためのテストフレームワークが複数存在します。その中でも特に広く使われているのが RSpecMiniTest です。以下に両者の特徴と使い方を詳しく説明します。


1. RSpec(アールスペック)

概要

RSpecはRubyで最も人気のある**BDD(Behavior-Driven Development)**スタイルのテストフレームワークです。人間が読んでも理解しやすい記述でテストを書くことができます。

特徴

  • 自然言語に近い文法で可読性が高い

  • describe / context / it などのブロックで構造化

  • **マッチャ(matchers)**で柔軟なテスト条件を記述

  • モックやスタブなどテストダブルのサポートが豊富

インストール

bash
gem install rspec

または、Gemfile に以下を追加して bundle install

ruby
group :test do gem 'rspec' end

初期化

bash
rspec --init

これで .rspecspec/spec_helper.rb が生成されます。

例:RSpecのテストコード

ruby
# ファイル名: spec/calculator_spec.rb require_relative '../calculator' RSpec.describe Calculator do describe '#add' do it '2つの数値を加算する' do calc = Calculator.new expect(calc.add(2, 3)).to eq(5) end end end

2. MiniTest(ミニテスト)

概要

MiniTestはRubyの標準ライブラリに含まれる軽量で高速なテストフレームワークで、**TDD(Test-Driven Development)**スタイルで使われます。

特徴

  • Ruby本体に同梱されており、追加インストール不要

  • 構文がシンプルで軽量

  • RSpecよりも自由度が高い

  • ユニットテスト / スペック記法の両方をサポート

例:MiniTestのユニットテスト形式

ruby
# ファイル名: test/test_calculator.rb require 'minitest/autorun' require_relative '../calculator' class TestCalculator < Minitest::Test def test_add calc = Calculator.new assert_equal 5, calc.add(2, 3) end end

スペックスタイルも可能

ruby
# ファイル名: test/test_calculator_spec.rb require 'minitest/autorun' describe Calculator do before do @calc = Calculator.new end it 'adds two numbers' do _(@calc.add(2, 3)).must_equal 5 end end

RSpecとMiniTestの比較

項目 RSpec MiniTest
スタイル BDD(振る舞い駆動開発) TDD(テスト駆動開発)
文法 DSL風(自然言語に近い) Rubyライク(簡素)
同梱 外部Gemとして提供 Ruby標準ライブラリに含まれる
拡張性・機能 豊富なマッチャやヘルパー 必要最低限、シンプル
学習コスト やや高い 低い

結論

  • RSpec は大規模開発やチーム開発に向いており、テストの可読性を重視したい場合に適しています。

  • MiniTest は標準ライブラリで動作が軽く、小規模なプロジェクトやシンプルな構成に向いています。

どちらを使うかは、プロジェクトの規模やチームの好み、目的によって選ぶと良いでしょう。

生成日:2025/05/03