Java Junit - ожидаемое исключение, которое выдается, но отмечается - PullRequest
0 голосов
/ 21 сентября 2019

Выдается «ожидаемое исключение, но ничего», что приводит к сбою в моем тестовом примере.Как решить это.Я хочу выдать исключение, если при поиске факториала число отрицательное,

Тестовый файл: -

public void testCalculateFactorialWithOutOfRangeException(){

    Factorial factorial = new Factorial();
    assertThrows(OutOfRangeException.class, () -> factorial.calculateFactorial(-12));
}

Кодовый файл -

public class Factorial {

    public String calculateFactorial(int number){

    //If the number is less than 1
    try {
        if(number < 1)
            throw new OutOfRangeException("Number cannot be less than 1");
        if(number > 1000)
            throw new OutOfRangeException("Number cannot be greater than 1000");

    }
}

catch (OutOfRangeException e) {

}

class OutOfRangeException extends Exception {

    public OutOfRangeException(String str) {
        super(str);
    }
}

Я ожидалвывод будет успешным, но он вызывает сбой

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Ваш тест в порядке, проблема в том, что ваш код не генерирует исключение или, более правильно, генерирует и перехватывает его.

Удалите предложение catch (OutOfRangeException e) из метода и добавьте throws OutOfRangeExceptionи тогда ваш тест пройдет

0 голосов
/ 21 сентября 2019

Вы можете создать тестовый пример, как показано ниже, когда ваш метод выдает исключение.

@Test(expected =OutOfRangeException.class)
public void testCalculateFactorialWithOutOfRangeException() throws OutOfRangeException{

    Factorial factorial = new Factorial();
   factorial.calculateFactorial(-12);
}

Однако в вашем случае вы не выдает исключение в классе, но оно обрабатывается в блоке catch, есливы бросаете исключение в свой метод, тогда оно будет работать.

class Factorial {

    public String calculateFactorial(int number) throws OutOfRangeException{

        //If the number is less than 1

        if(number < 1)
            throw new OutOfRangeException("Number cannot be less than 1");
        if(number > 1000)
            throw new OutOfRangeException("Number cannot be greater than 1000");


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