Artemis 资源可以通过使用提供的规则(适用于 JUnit 4)或扩展(适用于 JUnit 5)在 JUnit 测试中运行。 这可以使您更轻松地在测试中嵌入消息功能。
这些由包 `artemis-junit`(JUnit 4)和 `artemis-junit-5`(JUnit 5)提供。
1. 示例
1.1. JUnit 4
1.1.1. 添加 Maven 依赖项
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-junit</artifactId>
<!-- replace this for the version you are using -→
<version>2.38.0</version>
<scope>test</scope>
</dependency>
1.1.2. 在您的 JUnit 测试中声明规则
import org.apache.activemq.artemis.junit.EmbeddedActiveMQResource;
import org.junit.Rule;
import org.junit.Test;
public class MyTest {
@Rule
public EmbeddedActiveMQResource server = new EmbeddedActiveMQResource();
@Test
public void myTest() {
// test something, eg. create a queue
server.createQueue("test.adress", "test.queue");
}
}
1.2. JUnit 5
1.2.1. 添加 Maven 依赖项
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-junit-5</artifactId>
<!-- replace this for the version you are using -→
<version>2.38.0</version>
<scope>test</scope>
</dependency>
1.2.2. 在您的 JUnit 测试中声明规则
import org.apache.activemq.artemis.junit.EmbeddedActiveMQExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
public class MyTest {
@RegisterExtension
public EmbeddedActiveMQExtension server = new EmbeddedActiveMQExtension();
@Test
public void myTest() {
// test something, eg. create a queue
server.createQueue("test.adress", "test.queue");
}
}
2. 排序规则 / 扩展
这实际上是 JUnit 的一个功能,但这可能有助于预先确定规则执行的顺序。
2.1. JUnit 4
import org.junit.Rule;
import org.junit.rules.RuleChain;
public EmbeddedActiveMQResource server = new EmbeddedActiveMQResource();
public ActiveMQDynamicProducerResource producer = new ActiveMQDynamicProducerResource(server.getVmURL());
@Rule
public RuleChain ruleChain = RuleChain.outerRule(server).around(producer);
2.2. JUnit 5
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.extension.RegisterExtension;
@RegisterExtension
@Order(1)
public EmbeddedActiveMQExtension producer = new EmbeddedActiveMQExtension();
@RegisterExtension
@Order(2)
public ActiveMQDynamicProducerExtension producer = new ActiveMQDynamicProducerExtension(server.getVmURL());
3. 可用规则 / 扩展
JUnit 4 规则 | JUnit 5 扩展 | 描述 |
---|---|---|
EmbeddedActiveMQResource |
EmbeddedActiveMQExtension |
运行服务器,没有 JMS 管理器 |
EmbeddedJMSResource (已弃用) |
没有等效项 |
运行服务器,包括 JMS 管理器 |
ActiveMQConsumerResource |
ActiveMQConsumerExtension |
自动创建消费者 |
ActiveMQDynamicProducerResource |
ActiveMQDynamicProducerExtension |
自动创建生产者 |
ActiveMQProducerResource |
ActiveMQProducerExtension |
自动创建生产者 |