我无法让assert_raise
识别java异常。
我能做到
assert_raise(NativeException) { @iter.next }
工作正常,但如果我试图获得更具体的
java_import 'java.util.NoSuchElementException'
#...
assert_raise(NoSuchElementException) { @iter.next }
我收到错误
Should expect a class of exception, Java::JavaUtil::NoSuchElementException.
<nil> is not true.
但是,我可以使用begin/rescue/end
来捕获异常:
assert(begin
@iter.next
false
rescue NoSuchElementException
true
end)
我有什么问题,或者这是Test::Unit
部分的失败吗?
答案 0 :(得分:1)
我会把它作为一个bug提出来。它似乎无法理解java类在块中引发时,因为它返回nil,因此无法通过测试。
我在jruby 1.4.0下运行(ruby 1.8.7 patchlevel 174)(2009-11-02 69fbfa3)(Java HotSpot(TM)Client VM 1.5.0_22)[i386-java]
include Java
import java.util.NoSuchElementException
require 'test/unit'
class FooBar < Test::Unit::TestCase
def test_foo
exception_caught = false
begin
raise NoSuchElementException.new("Bad param")
rescue NoSuchElementException => e
exception_caught = true
end
assert exception_caught
end
def test_bar
assert_raise NoSuchElementException do
raise NoSuchElementException.new("Bad param")
end
end
end