JRuby 和 Test::Unit 的assert_raise

发布于 2024-08-20 00:43:05 字数 671 浏览 7 评论 0原文

我无法让 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 方面的失败?

I'm having trouble making assert_raise recognize java exceptions.

I can do

assert_raise(NativeException) { @iter.next }

which works fine, but if I try to get more specific

java_import 'java.util.NoSuchElementException'
#...
assert_raise(NoSuchElementException) { @iter.next }

I get the error

Should expect a class of exception, Java::JavaUtil::NoSuchElementException.
<nil> is not true.

However, I can use begin/rescue/end to catch the exception:

assert(begin
         @iter.next
         false
       rescue NoSuchElementException
         true
       end)

Is there something I'm doing wrong, or is this a failure on Test::Unit's part?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春夜浅 2024-08-27 00:43:05

我会把它作为一个错误提出。当它在块中引发时,它似乎无法理解 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

I would raise it as a bug. It seems it cannot understand the java class when it raised in a block, since it returns nil and therefore, fails the test.

I ran it under 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文