JRuby и Test :: блок assert_raise - PullRequest
       17

JRuby и Test :: блок assert_raise

2 голосов
/ 02 февраля 2010

У меня проблемы с настройкой 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?

1 Ответ

1 голос
/ 12 февраля 2010

Я бы поднял это как ошибку. Кажется, он не может понять класс java, когда он возникает в блоке, поскольку он возвращает nil и, следовательно, не проходит тест.

Я запускал его под jruby 1.4.0 (уровень исправления ruby ​​1.8.7 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...