About testunit-skill
A reference skill for writing and running Ruby tests with Test::Unit. It is aimed at Ruby developers and covers core test structure, assertions, fixtures, and test discovery.
Key features
- 01Test::Unit test class patterns
- 02Common assertion methods
- 03Class-level startup and shutdown fixtures
- 04Test naming and ordering guidance
- 05Run and autodiscovery commands
Use cases
- 01Creating tests for Ruby classes
- 02Sharing setup across a test class
- 03Running a test file or discovering tests
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill testunit-skillAfter installing, type/testunit-skillin Claude Code to confirm it loaded.
Bundled filesreference/advanced-patterns.mdreference/playbook.md
Details
From the project READMETest::Unit Ruby Skill
Core Patterns
Basic Test
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
Assertions
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 }
Test Fixtures
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
Test Ordering and Naming
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
Setup: gem install test-unit
Run: ruby test/test_calculator.rb or ruby -Itest -e "Dir.glob('test/**/test_*.rb').each{|f| require f}"
Autodiscovery: testrb test/ (with test-unit gem)
Deep Patterns
For advanced patterns, debugging guides, CI/CD integration, and best practices,
see reference/playbook.md.
Comments
Markdown supported