Исключение соответствия в библиотеке Specs BDD для Scala - PullRequest
11 голосов
/ 08 февраля 2011

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

a must throwA[ClassNotFoundException]

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

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

 a must throwA[ClassNotFoundException].not

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

Пожалуйста, помогите Спасибо

Ответы [ 4 ]

17 голосов
/ 17 марта 2011

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

 a must throwA[ClassNotFoundException].not

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

 a must not(throwA[ClassNotFoundException])
2 голосов
/ 08 февраля 2011

Как насчет этого:

"An isSpaceNode function" should {
    "not fail with a Group" in {
       Group(<a/><b/>).isSpaceNode must not throwA(new UnsupportedOperationException)
    }
}
2 голосов
/ 08 февраля 2011

Тест, приведенный ниже, проходит, если выражение выдает что-либо, кроме ClassNotFoundException:

 must throwA[Exception].like {
    case m:  ClassNotFoundException => false
    case _ => true}

Если вы просто хотите убедиться, что выражение не выдает ClassNotFoundException, почему бы просто не использовать tryблок захвата:

try{
         ...
    }catch{
        case m:  ClassNotFoundException => fail("ClassNotFoundException")
        case e => e.printStackTrace
}
2 голосов
/ 08 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...