当前位置: 首页 > 知识库问答 >
问题:

Apache Camel-JUnit测试中endpoint上没有可用的使用者

端木飞
2023-03-14

我用的是骆驼2.13.1,有一个奇怪的行为。如果我想测试我的路由,我已经用XML编写了。

我总是在一条路由上得到没有消费者可用的信息。如果我把它部署在Tomcat上,一切都正常工作。即使在启动时,我也可以看到日志,它清楚地说明路由已被消耗。

我的路由如下所示:

<route id="demo-polling-consumer">
  <from uri="timer:demo-polling?fixedRate=true&amp;period=60s" />
  <to uri="bean:demo?method=selectDemoCustomer" />
  <to uri="direct-vm:demo-get-new-orders" />
  <split>
    <simple>${body}</simple>
    <to uri="direct-vm:demo-get-order-details" />
  </split>
</route>

<route id="epunkt-get-new-jobadverts">
  <from uri="direct-vm:demo-get-order-details" />
  <to uri="bean:demo?method=getOrderDetail" />
</route>

我这样开始测试:

@RunWith(SpringJUnit4ClassRunner.class)
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@ContextConfiguration(locations = { "classpath:spring-module.xml" })
public class FirstBirdContextTest {

  @EndpointInject(uri = "mock:out")
  private MockEndpoint mockOut;
  @Produce(uri = "direct:in")
  private ProducerTemplate in;

  @Test
  public void testPayloadIsTransformed() throws InterruptedException, FileNotFoundException, JAXBException {

  }

我基本上只是开始我的Spring-Context。spring-module.xml加载多个camel-context.xml文件。

共有1个答案

魏刚豪
2023-03-14

此路由应具有当前缺少的from

   <route id="epunkt-get-new-jobadverts">
        <to uri="direct-vm:demo-get-order-details" />
        <to uri="bean:demo?method=getOrderDetail" />
    </route>
 类似资料:
  • 我是阿帕奇骆驼队的新手。我试图将一个交换从java方法发送到一个路由,但它给了我“由:org.apache.camel.component.direct.DirectConsumerNotAvailableException:endpoint上没有可用的消费者”错误。我想知道这个错误到底是什么,我们什么时候得到这个?

  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我对junit mockito非常陌生,并尝试使用mockito编写junit测试用例。 这是我的方法,我必须为此编写一个jUnit。 ChefService和ChefApi传递的方法参数来自第三方api 这里是呼叫chefService。listCookbookVersions()将返回CookBookVersion类类型的迭代器,如

  • 我试图使用spring和mockito对rest控制器进行单元测试。这是我的主控制器方法。 这是我的JUnit测试: 在输出响应中,测试失败,因为它得到404错误,但它预期成功代码为200。我相信我已经正确设置了独立配置,我会做错什么。为什么URI没有正确映射到方法?请注意,对于来自应用程序前端的相同URI,它工作正常。以下是我使用Postman工具为chrome测试的正确200响应的完整URI:

  • 我有一个Java应用程序,它使用Gradle作为构建系统。这是多项目构建(几个Java项目)。 当我运行时,有些测试失败了,我注意到并不是所有的测试都在运行。 如果我将以下代码添加到中,它确实会运行所有测试,但当然,构建的代码总是成功完成: 我有两个问题: gradle是否在第一次失败后停止执行测试? 是否有一种方法可以运行所有测试(即使在一些测试失败时),并且如果其中一些测试失败,构建的测试仍然