JUnit extension that provides a ActiveMQ Embedded in-memory JMS Broker. It should be compatible with all the usual JMS integration tools such as Apache Camel and Spring JMS Template. Inspired by the Embedded DB JUnit Rule project.
- because you want to test your JMS integration code without being dependent on a running external JMS Broker
- setting up the broker manually for all your tests requires a lot of boilerplate code
- I found myself repeating myself and decided that creating this library would make my life easier :-)
This library is distributed through the Sonatype OSS repo and should thus be widely available. Java 8 or higher is required. Feedback is more than welcome. Feel free to create issues if you find bugs or have feature requests for future releases :-)
- version 0.2: rewritten core and added support for JUnit 5 Jupiter
- version 0.1: initial release
More information on JMS support is found in the project WIKI
<dependency>
<groupId>org.zapodot</groupId>
<artifactId>embedded-jms-junit5</artifactId>
<version>0.2</version>
<scope>test</scope>
</dependency>
@ExtendWith(EmbeddedJmsBroker.class)
class EmbeddedJmsBrokerRequestReplySpringTest {
private static final String TEST_MESSAGE = "Test message";
private static final String DESTINATION = "queue:destination";
/**
* The type of property must be either ConnectionFactory, ActiveMQFactory or URI.
* If it is a URI to the broker is injected
*/
@EmbeddedJms
private ConnectionFactory connectionFactory;
@DisplayName("My test")
@Test
void testJmsLogic() throws Exception {
// make JMS magic
}
@DisplayName("parameterized test")
@Test
void connectionFactoryParameter(@EmbeddedJms ConnectionFactory connectionFactory) {
// perform JMS magic
}
}
<dependency>
<groupId>org.zapodot</groupId>
<artifactId>embedded-jms-junit</artifactId>
<version>0.2</version>
<scope>test</scope>
</dependency>
@Rule
public EmbeddedJmsRule embeddedJmsRule = EmbeddedJmsRule.builder().build();
@Test
public void jmsTest() throws Exception {
final ConnectionFactory connectionFactory = embeddedJmsRule.connectionFactory();
// work your JMS magic
}
For more examples check the JUnit tests in this project