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 |
自動化建立生產者 |