0
Iに対応するテストケースでは、次のコードがありますによるルーチン「レスキュー」の存在にテストケースの問題例外を扱う場合
class XXX
attr_accessor :source
def check
begin
raise ArgumentError, "No source specified." \
unless @source.empty? != true
puts "Passed"
rescue
print "Error: ",$!, "\n"
end
end
end
class TestXXX < Test::Unit::TestCase
def setup
@x = XXX.new
end
def test_check
assert_nil(@x.source)
assert_raise(NoMethodError) { @x.check }
end
end
assert_raiseに次のような結果を生成するテストケースを実行する:
Started .Error: undefined method `empty?' for nil:NilClass F Finished in 0.01 seconds. 1) Failure: test_check:18 exception expected but none was thrown. 1 tests, 2 assertions, 1 failures, 0 errors
コードから「レスキュー」を削除することができない場合、このシナリオのテストケースを作成するにはどうすればよいですか?
「レスキュー」をコメントアウトすると、私にとって好ましい結果が得られます。
class XXX
attr_accessor :source
def check
begin
raise ArgumentError, "No source specified." \
unless @source.empty? != true
puts "Passed"
#rescue
# print "Error: ",$!, "\n"
end
end
end
Started .. Finished in 0.0 seconds. 1 tests, 2 assertions, 0 failures, 0 errors
私はメソッドの実際の動作をテストする必要がありますと思う。実際にはメソッドに渡されたすべての間違った入力をテストし、それを処理できるかどうかを確認しようとしていました。 申し訳ありません、初心者はルビーで、ちょうどtddに手を浸しています。 :) –
すべての間違った入力をテストすることは間違いありません。間違った入力の正しい動作を確認する方法です。 – djna