lib/colorizer.rb: #!/usr/bin/env ruby ### Colorizer class Colorizer def initialize(options = {}) if options[:max].nil? or options[:min].nil? raise ArgumentError, "Need to pass in max and min options" end end def colorize(value) raise ArgumentError, "Kaboom" end end test/test_colorizer.rb: #!/usr/bin/env ruby require 'test/unit' require 'colorizer' ### Colorizer test cases class TestColorizer < Test::Unit::TestCase def setup end def teardown end def test_no_max_in_constructor assert_raise ArgumentError do Colorizer.new :min => 0 end end def test_no_min_in_constructor assert_raise ArgumentError do Colorizer.new :max => 55 end end def test_constructor_happy_path Colorizer.new :min => 0, :max => 55 end def test_colorize c = Colorizer.new :min => 0, :max => 55 assert_raise ArgumentError do c.colorize(5) end end end Output: $ autotest # Testing updated files + /usr/bin/ruby -Ilib:test -e '["test/test_colorizer.rb", "test/test_colorizer.rb"].each { |f| load f }' | unit_diff -u Loaded suite . Started Finished in 0.0 seconds. 0 tests, 0 assertions, 0 failures, 0 errors # Passed # All passed # Waiting for changes