Исключитель в библиотеке Specs BDD для Scala
Я использую библиотеку Specs BDD для написания модульных тестов Scala ( http://code.google.com/p/specs). В моем коде, если я хочу утверждать, что выдает исключение типа ClassNotFoundException, то я могу написать следующее код:
a must throwA[ClassNotFoundException]
Тем не менее, я хочу проверить обратный случай, т.е. я хочу утверждать, что "не" выбрасывает исключение типа ClassNotFoundException.
Я попытался использовать не отрицание соответствия, как показано ниже:
a must throwA[ClassNotFoundException].not
Но это не сработало. Я получаю ошибки компиляции. Итак, есть ли способ я могу утверждать, что исключение типа ClassNotFoundException, например, не выбрасывается?
Пожалуйста, помогите Спасибо
4 ответа
Да, есть проблема синтаксического анализа при компиляции:
a must throwA[ClassNotFoundException].not
Вам нужно написать вместо:
a must not(throwA[ClassNotFoundException])
Даже если он не отвечает на вашу проблему, вам не нужно проверять, не выдается ли исключение. В этом случае вам лучше проверить, если намеченный результат в порядке... Как только тест выполнен, это означает, что он не выдает исключение.
Как насчет чего-то вроде этого:
"An isSpaceNode function" should {
"not fail with a Group" in {
Group(<a/><b/>).isSpaceNode must not throwA(new UnsupportedOperationException)
}
}
Тест ниже проходит, если выражение выбрасывает что-либо кроме ClassNotFoundException
:
must throwA[Exception].like {
case m: ClassNotFoundException => false
case _ => true}
Если вы просто хотите убедиться, что выражение не вызывает исключение ClassNotFoundException, почему бы просто не использовать блок try-catch:
try{
...
}catch{
case m: ClassNotFoundException => fail("ClassNotFoundException")
case e => e.printStackTrace
}