Подтвердить что ты не робот

Соединитель исключений в спецификациях Библиотека BDD для Scala

Im использует библиотеку спецификаций BDD для записи модульных тестов Scala (http://code.google.com/p/specs) . В моем коде, если я хочу утверждать, что выбрасывает исключение типа ClassNotFoundException, я могу написать следующий код:

a must throwA[ClassNotFoundException]

Тем не менее, я хочу проверить обратный регистр, т.е. хочу утверждать, что "не" генерирует исключение типа ClassNotFoundException.

Я попытался использовать неконвертер отрицания, как показано ниже:

 a must throwA[ClassNotFoundException].not

Но это не сработало. Im получает ошибки компиляции. Итак, можно ли каким-либо образом утверждать, что исключение типа ClassNotFoundException, например, не выбрано?

Пожалуйста, помогите Благодарю вас.

4b9b3361

Ответ 1

Да, при компиляции возникает проблема синтаксического анализа:

 a must throwA[ClassNotFoundException].not

Вместо этого вам нужно написать:

 a must not(throwA[ClassNotFoundException])

Ответ 2

Даже если он не отвечает на вашу проблему, вам не нужно проверять, не выбрасывается ли какое-либо исключение. В этом случае вам лучше проверить, соответствует ли ожидаемый результат... Как только тест выполняется, это означает, что он не генерирует исключение.

Ответ 3

Как насчет чего-то вроде этого:

"An isSpaceNode function" should {
    "not fail with a Group" in {
       Group(<a/><b/>).isSpaceNode must not throwA(new UnsupportedOperationException)
    }
}

Ответ 4

Приведенный ниже тест проходит, если выражение выбрасывает что-либо, кроме 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
}