gpt4 book ai didi

java - 在 Spring Boot 中测试 Camel 处理器

转载 作者:行者123 更新时间:2023-12-02 09:27:56 24 4
gpt4 key购买 nike

我正在尝试在 Spring Boot 中测试 Camel 处理器。然而,即使遵循 Camel in Action 和其他 SO 答案的指导,我也会遇到很多异常。

我使用的是Camel 3.0.0-M4

例如,这是我的测试:

@SpringBootTest
@BootstrapWith(SpringBootTestContextBootstrapper.class)
public class MyProcessorTest extends CamelTestSupport {

@Produce
ProducerTemplate template;

@EndpointInject(uri = "mock:out")
private MockEndpoint resultEndpoint;

@Before
public void setUp() throws Exception {
super.setUp();
}

@BeforeClass
public static void stopCamelStart() {
SpringCamelContext.setNoStart(true);
}

@AfterClass
public static void enableCamelStart() {
SpringCamelContext.setNoStart(false);
}

@Before
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("seda:test")
.process(new MyProcessor())
.to("mock:out");
}
};
}

@Test
public void testPrepend() throws Exception {
Map<String, String> body = new HashMap<String, String>();
body.put("test", "body");

template.sendBody("seda:test", body);
String result = resultEndpoint.getExchanges().get(0).getIn().getBody(String.class);

}
}

我得到一个java.lang.ArrayIndexOutOfBoundsException

如果我尝试启动 Camel 上下文context.start();,我会得到一个java.lang.NullPointerException

如果我将发送正文的路由交换为 template.sendBody("mock:out", body); 则不会发生任何处理。

如果我从 seda:test 更改为 direct:test 我会得到一个运行速度非常慢的测试并且 org.apache.camel.component.direct.DirectConsumerNotAvailableException :端点上没有可用的消费者:direct://test

我哪里出错了?

最佳答案

在第一次查看时,您有两个标有@Before的方法。 JUnit 根本不保证两者的执行顺序。所以也许这会造成麻烦。

<小时/>

但是,我认为没有必要设置 Camel 路由测试来测试处理器

我强烈建议用 POJO 替换您的处理器(它们很笨拙且难以测试),并使用 .bean 调用它 而不是 .processor

关于java - 在 Spring Boot 中测试 Camel 处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com