Я хочу убедиться, что мое потребительское приложение верблюда генерирует исключительную ситуацию c с помощью теста junit - PullRequest
0 голосов
/ 27 марта 2020
 // custom exception

        public class customexception () {

        log.error("exception);
        }

    --- apache camel consumer app which has custom exception

        public consumer app implements Processor {

        //process & validate

    @override
    public process(message) {

        if(condition met)
             throw customexception();

        }
       }

        // my junit test class

        @runwith(CamelSpringBootRunner)
        @springboottest
        public mytestclass {


        @Autowired
        ProducerTemplate producer;

        @Test
        public testexception () {

        producer.sendbody("invalid message");

        //??? assert customexception is thrown by consumer

        }
        }

Здесь ожидаемое условие Junit не будет работать, потому что я не получаю исключение в тесте, но автономное потребительское приложение, которое прослушивает сообщение, созданное моим тестом, выдает исключение.

1 Ответ

0 голосов
/ 27 марта 2020

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

JUnit не может перехватывать исключения, которые не генерируются текущий стек или тот, который не соответствует тесту.

Звучит так, как будто вы проводите модульное тестирование не в том месте или на неправильном уровне детализации.

Поведение ( исключение) не является поведением класса, который вы тестируете. Это поведение потребительского приложения. Таким образом, проверка на выдачу исключения должна проводиться в модульном тесте для потребительского приложения.

  • Модульный тест для этого класса (производителя) должен заключаться в том, что он генерирует сообщения такого типа это будет / должно генерировать исключение. Вероятно, следует обратиться к «макету» для потребительского приложения, которое захватывает сообщения для проверки вашим тестом.

  • Модульный тест для потребительского приложения также должен принимать сообщения от " издеваться над продюсером. В этом тесте вы проверяете, что выбрасывается соответствующее исключение.

  • Вы также можете проверить это на уровне интеграционного теста, но затем вы можете тестировать, что приложение потребителя (например, ) запись ошибки в свой файл журнала в сценарии, который должен привести к такому поведению. Или, может быть, вам не нужно проверять это.

...