I want to write test for something like below;
There is a listener called state-info-1
in src/main
.
It does some changes to any message it gets and publishes the new message on activemq topic state-info-2
.
I will build a dummy message and publish on to activemq topic state-info-1
.
Finally verify that, the received message on topic state-info-2
is like i expected.
My Listeners are like;
@JmsListener(destination = "state-info-1", containerFactory = "connFactory")
public void receiveMessage(Message payload) {
// Do Stuff and Publish to state-info-2
}
Is it possible i can write test for this? Or i have to do it in some other way?
Also, i looked at this : https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-activemq/src/test/java/sample/activemq/SampleActiveMqTests.java
But this is not what i am expecting.
Any help or push in the right direction will be enough.
Thank you for your time.
The status of the listeners is always available by running the list listeners command from the user interface or the Transaction Server console. If a listener becomes disconnected, the Transaction Server can attempt to re-connect to the queue multiple times before it fails with a connection error.
The @SpringBootTest annotation tells Spring Boot to look for a main configuration class (one with @SpringBootApplication , for instance) and use that to start a Spring application context. You can run this test in your IDE or on the command line (by running ./mvnw test or ./gradlew test ), and it should pass.
@SpringBootApplication
public class So42803627Application {
public static void main(String[] args) {
SpringApplication.run(So42803627Application.class, args);
}
@Autowired
private JmsTemplate jmsTemplate;
@JmsListener(destination = "foo")
public void handle(String in) {
this.jmsTemplate.convertAndSend("bar", in.toUpperCase());
}
}
and
@RunWith(SpringRunner.class)
@SpringBootTest
public class So42803627ApplicationTests {
@Autowired
private JmsTemplate jmsTemplate;
@Test
public void test() {
this.jmsTemplate.convertAndSend("foo", "Hello, world!");
this.jmsTemplate.setReceiveTimeout(10_000);
assertThat(this.jmsTemplate.receiveAndConvert("bar")).isEqualTo("HELLO, WORLD!");
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With