#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