创建 ActiveMQ 代理在后续测试中失败,未找到服务:'META-INF/services/org/apache/activemq/wireformat/default'

Creating ActiveMQ broker fails on subsequent tests with Service not found: 'META-INF/services/org/apache/activemq/wireformat/default'

我在不同的测试 classes 中对我的骆驼路线进行了多次单元测试。第一个测试 class 运行良好,后续测试失败

Service not found:'META-INF/services/org/apache/activemq/wireformat/default'

我想测试我的 JMS 路由,所以我必须在我的测试中启动一个临时的 activemq 代理。

我已经尝试破坏我在@BeforeClass 方法中创建的代理资源。然而,这似乎并没有什么不同。

这就是我在测试中设置代理的方式 classes:

@BeforeClass
public static void setUpClass() throws Exception {
    brokerSvc = new BrokerService();
    brokerSvc.setBrokerName("TestBroker");
    brokerSvc.addConnector("tcp://localhost:61616");
    brokerSvc.start();
}

这就是我拆解后的样子

@AfterClass
public static void teardownClass() throws Exception {
    brokerSvc.stop();
    brokerSvc.waitUntilStopped();
}

我希望这会释放分配的资源,以便我可以在后续测试中使用相同的方法来设置和拆除临时代理,但它只会抛出上述错误。

如何为我的每个测试 classes 安全地创建一个临时代理?

我不知道是否有人真的再使用 camel,因为这个问题在 5 天内被查看了 11 次,但无论如何这里是答案:

这是正确的设置

@Before
public void setUp() throws Exception {
    super.setUp();
    brokerSvc = new BrokerService();
    brokerSvc.setBrokerName("TestBroker");
    brokerSvc.addConnector("tcp://localhost:61616");
    brokerSvc.start();
}

这是正确的拆解

@After
public void tearDown() throws Exception {
    super.tearDown();
    brokerSvc.stop();
    brokerSvc = null;
}