mcpField
T
testunit-skill

testunit-skill

github.com/lambdatestテスト・品質384207 回インストール2 週間前に更新
リポジトリ

testunit-skill について

Test::Unit を使った Ruby のテスト作成と実行に関するリファレンスです。テスト構造、アサーション、フィクスチャ、テスト検出を扱い、Ruby 開発者向けです。

主な機能

  1. 01Test::Unit のテストクラスパターン
  2. 02一般的なアサーションメソッド
  3. 03クラス単位の起動・終了フィクスチャ
  4. 04テストの命名と順序の指針
  5. 05実行・自動検出コマンド

活用シーン

  1. 01Ruby クラスのテスト作成
  2. 02テストクラス内での初期化共有
  3. 03テストファイルの実行や検出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lambdatest/agent-skills --skill testunit-skill

インストール後、Claude Code で/testunit-skillを入力して読み込まれたか確認します。

同梱ファイルreference/advanced-patterns.mdreference/playbook.md

詳細

Test::Unit Ruby スキル

基本パターン

基本的なテスト
require 'test/unit'

class TestCalculator < Test::Unit::TestCase
  def setup
    @calc = Calculator.new
  end

  def test_addition
    assert_equal(5, @calc.add(2, 3), "2 + 3 should equal 5")
  end

  def test_subtraction
    assert_equal(1, @calc.subtract(3, 2))
  end

  def test_division_by_zero
    assert_raise(ZeroDivisionError) { @calc.divide(10, 0) }
  end

  def test_float_division
    assert_in_delta(3.33, @calc.divide(10, 3), 0.01)
  end

  def teardown
    # cleanup
  end
end
アサーション
assert_equal(expected, actual, message = nil)
assert_not_equal(unexpected, actual)
assert_true(value)
assert_false(value)
assert_nil(value)
assert_not_nil(value)
assert_instance_of(klass, obj)
assert_kind_of(klass, obj)
assert_respond_to(obj, :method_name)
assert_match(/pattern/, string)
assert_no_match(/pattern/, string)
assert_include(collection, item)
assert_not_include(collection, item)
assert_empty(collection)
assert_not_empty(collection)
assert_raise(ErrorClass) { block }
assert_nothing_raised { block }
assert_in_delta(expected, actual, delta)
assert_operator(value, :>, 5)
assert_send([obj, :method, arg])
assert_block("message") { condition }
テストフィクスチャ
class TestDatabase < Test::Unit::TestCase
  def self.startup
    # Once before all tests in class
    @@db = Database.connect('test')
  end

  def self.shutdown
    # Once after all tests in class
    @@db.disconnect
  end

  def setup
    # Before each test
    @@db.begin_transaction
  end

  def teardown
    # After each test
    @@db.rollback
  end
end
テストの順序と命名
class TestUserService < Test::Unit::TestCase
  # Methods must start with 'test_'
  def test_create_user
    user = UserService.create('Alice', '[email protected]')
    assert_not_nil(user)
    assert_equal('Alice', user.name)
  end

  def test_find_user_by_email
    user = UserService.find_by_email('[email protected]')
    assert_instance_of(User, user)
  end
end

セットアップ:gem install test-unit

実行:ruby test/test_calculator.rb または ruby -Itest -e "Dir.glob('test/**/test_*.rb').each{|f| require f}"

自動検出:testrb test/(test-unit gem を使用)

応用パターン

高度なパターン、デバッグガイド、CI/CD との統合、ベストプラクティスについては、 reference/playbook.md を参照してください。

コメント