Ответ 1
Да, при компиляции возникает проблема синтаксического анализа:
a must throwA[ClassNotFoundException].not
Вместо этого вам нужно написать:
a must not(throwA[ClassNotFoundException])
Im использует библиотеку спецификаций BDD для записи модульных тестов Scala (http://code.google.com/p/specs) . В моем коде, если я хочу утверждать, что выбрасывает исключение типа ClassNotFoundException, я могу написать следующий код:
a must throwA[ClassNotFoundException]
Тем не менее, я хочу проверить обратный регистр, т.е. хочу утверждать, что "не" генерирует исключение типа ClassNotFoundException.
Я попытался использовать неконвертер отрицания, как показано ниже:
a must throwA[ClassNotFoundException].not
Но это не сработало. Im получает ошибки компиляции. Итак, можно ли каким-либо образом утверждать, что исключение типа ClassNotFoundException, например, не выбрано?
Пожалуйста, помогите Благодарю вас.
Да, при компиляции возникает проблема синтаксического анализа:
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
}