The package artemis-junit
provides tools to facilitate how to run Artemis resources inside JUnit Tests.
These are provided as JUnit “rules” and can make it easier to embed messaging functionality on your tests.
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>artemis-junit</artifactId> <!-- replace this for the version you are using --> <version>2.5.0</version> <scope>test</scope> </dependency>
import org.apache.activemq.artemis.junit.EmbeddedActiveMQResource; import org.junit.Rule; import org.junit.Test; public class MyTest { @Rule public EmbeddedActiveMQResource resource = new EmbeddedActiveMQResource(); @Test public void myTest() { } }
This will start a server that will be available for your test:
[main] 17:00:16,644 INFO [org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=false,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/largemessages,pagingDirectory=data/paging) [main] 17:00:16,666 INFO [org.apache.activemq.artemis.core.server] AMQ221045: libaio is not available, switching the configuration into NIO [main] 17:00:16,688 INFO [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-server]. Adding protocol support for: CORE [main] 17:00:16,801 INFO [org.apache.activemq.artemis.core.server] AMQ221007: Server is now live [main] 17:00:16,801 INFO [org.apache.activemq.artemis.core.server] AMQ221001: Apache ActiveMQ Artemis Message Broker version 2.5.0-SNAPSHOT [embedded-server, nodeID=39e78380-842c-11e6-9e43-f45c8992f3c7] [main] 17:00:16,891 INFO [org.apache.activemq.artemis.core.server] AMQ221002: Apache ActiveMQ Artemis Message Broker version 2.5.0-SNAPSHOT [39e78380-842c-11e6-9e43-f45c8992f3c7] stopped, uptime 0.272 seconds
This is actually a JUnit feature, but this could be helpful on pre-determining the order on which rules are executed.
ActiveMQDynamicProducerResource producer = new ActiveMQDynamicProducerResource(server.getVmURL()); @Rule public RuleChain ruleChain = RuleChain.outerRule(new ThreadLeakCheckRule()).around(server).around(producer);
Name | Description |
---|---|
EmbeddedActiveMQResource | Run a Server, without the JMS manager |
EmbeddedJMSResource | Run a Server, including the JMS Manager |
ActiveMQConsumerResource | Automate the creation of a consumer |
ActiveMQProducerResource | Automate the creation of a producer |
ThreadLeakCheckRule | Check that all threads have been finished after the test is finished |