Исключитель в библиотеке 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
}
Другие вопросы по тегам