Ошибка Mockito в тестовом примере при отправке сообщения в ActiveMQ onMessage()

#java #unit-testing #junit #mockito #activemq

#java #модульное тестирование #junit #mockito #activemq

Вопрос:

Я пишу приложение с использованием ActiveMQ и модульных тестовых примеров с использованием Mockito, где у меня есть асинхронный прослушиватель onMessage () и метод для его тестирования.Тестовый пример завершается неудачей, если я добавляю какое-либо условие if в onMessage().Как этого избежать

Фрагмент кода выглядит следующим образом

Main.java

 //Initialize boolean here
    boolean flag=false;

    public void onMessage(final Message message) {

                    //getting error in the below if condition
                    if(flag) //Not executing at all Null pointer here
                    {
                            if (!(message instanceof TextMessage)) {
                               //Log error
                            }
                            try {
                                final String messageType = message.getStringProperty("messageType");
                                _LOG.info("The MessageType is {}", messageType);
                                final String msg = ((TextMessage) message).getText();
                                _LOG.debug(msg);
                            } catch (final JMSException e) {
                                _LOG.error("We could not read the message", e);
                            }
                    }
                    else  //not able to execute if or else conditions
                    {
                        //do Something else
                    }
               }
  

MockTest.java

         //Call Main here
         @InjectMocks
         private Main listener;

        @Test
            public void shouldProcessMessage() throws JMSException {

                final String messageType = "Hello";
                final String messageBody ="Hi";
                final ActiveMQTextMessage message = new ActiveMQTextMessage();
                message.setStringProperty("messageType", messageType);
                message.setText(messageBody);

                // The below line does not execute at all
                // iam getting null pointer exception here
                listener.onMessage(message);
            }
  

Комментарии:

1. Откуда, черт возьми, flag берется?

2. флаг == true? Если это логическое значение, не сравнивайте с true. Если это логическое значение, вы, вероятно, хотите логическое значение. Похоже, что ошибка распаковки не имеет ничего общего с mockito или activemq.

Ответ №1:

Было ли создано логическое значение flag где-нибудь в этом классе?

Если вы получаете NPE, это, вероятно, потому, что вы не создали экземпляр flag переменной.

Комментарии:

1. я обновил Main.java flag — это логическая переменная, которая создается в Main.java