Я изо всех сил пытаюсь заставить метод createMessage распознавать модульным тестом. Я не уверен, что мой подход правильный. Я новичок ie с Mockito.
Любая помощь приветствуется.
Вот мой класс
@Component
public class MyMessageSender {
@Autowired private JmsTemplate jmsTemplate;
public void sendMessage(String queueName, String message) {
jmsTemplate.send(queueName, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
}
Вот мой тестовый класс
@RunWith(MockitoJUnitRunner.class)
public class MyMessageSenderTest {
@InjectMocks MyMessageSender myMessageSender;
@Mock JmsTemplate jmsTemplate;
@Test
public void testSend() throws JMSException {
jmsTemplate.send(Mockito.anyString(), Mockito.any(MessageCreator.class));
myMessageSender.sendMessage("test", "test");
}
@Test
public void testCreateMessage() throws Exception {
Session session = Mockito.mock(Session.class);
TextMessage textMessage = Mockito.mock(TextMessage.class);
textMessage.setText("hello");
String RESPONSE_TEXT = "hello";
// it raised java.lang.NullPointerException here
assertEquals(session.createTextMessage(RESPONSE_TEXT).getText(), textMessage.getText());
}
}
Итак, я добавил
Mockito.when(session.createTextMessage(RESPONSE_TEXT).thenReturn(message);
assertTrue((session.createTextMessage(RESPONSE_TEXT).getText().toString().length() > 1);
Он работает, но на основе покрытия кода jacoco не показывает, что он покрывает эту строку return session.createTextMessage(message);
Пожалуйста, дайте мне знать, что я делаю не так.