[~/local/src/ruby/LPP/unit_testing/simple_example(master)]$ cat test/tc_simple_number2.rb # File: tc_simple_number2.rb require "simple_number" require "test/unit" class TestSimpleNumber < Test::Unit::TestCase def test_simple assert_equal(4, SimpleNumber.new(2).add(2) ) assert_equal(4, SimpleNumber.new(2).multiply(2) ) end def test_typecheck assert_raise( RuntimeError ) { SimpleNumber.new('a') } end def test_failure assert_equal(3, SimpleNumber.new(2).add(2), "Adding doesn't work" ) end end
[~/local/src/ruby/LPP/unit_testing/simple_example(master)]$ cat Rakefile desc "Test class SimpleNumber" task :test do sh "ruby -Ilib -Itest test/tc_simple_number.rb" end desc "Test with test/tc_simple_number2.rb. Expect failures" task :test2 do sh "ruby -Ilib -Itest test/tc_simple_number2.rb" end
[~/local/src/ruby/LPP/unit_testing/simple_example(master)]$ rake test2 ruby -Ilib -Itest test/tc_simple_number2.rb Run options: # Running tests: F.. Finished tests in 0.001706s, 1758.4994 tests/s, 2344.6659 assertions/s. 1) Failure: test_failure(TestSimpleNumber) [test/tc_simple_number2.rb:18]: Adding doesn't work. <3> expected but was <4>. 3 tests, 4 assertions, 1 failures, 0 errors, 0 skips rake aborted! Command failed with status (1): [ruby -Ilib -Itest test/tc_simple_number2.r...] /Users/casiano/local/src/ruby/LPP/unit_testing/simple_example/Rakefile:8:in `block in <top (required)>' /Users/casiano/.rvm/gems/ruby-1.9.3-p392/bin/ruby_noexec_wrapper:14:in `eval' /Users/casiano/.rvm/gems/ruby-1.9.3-p392/bin/ruby_noexec_wrapper:14:in `<main>' Tasks: TOP => test2 (See full trace by running task with --trace)
test_typecheck
uses assert_raise
to check for an
exception.
test_failure
is set up to fail, which the
Ruby output happily points out, not only telling us which test
failed, but how it failed (expected <3> but was <4>
).
Casiano Rodriguez León 2015-01-07