模拟端点忽略消息

时间:2015-08-14 08:51:41

标签: java mocking apache-camel jboss-arquillian

我有以下测试类:

@RunWith(Arquillian.class)
public class MyTest {

    @Inject
    @Uri("mock:repositoryRoute")
    private ProducerTemplate producer;

    @Inject
    @Mock("direct:someStart")
    private MockEndpoint endRoute;

    @Inject
    private ModelCamelContext modelContext;

    @Before
    public void init() throws Exception {
        modelContext.start();
    }

    @After
    public void stopContext() throws Exception {
        modelContext.stop();
    }

    @Deployment
    public static Archive<?> deploy() {
      // deployment code
    }



    @Test
    public void test1() throws Exception {
        endRoute.expectedMessageCount(1);
        producer.sendBody("direct:someStart", someBody);
        endRoute.assertIsSatisfied();
    }


    @Test
    public void test2() throws Exception {
        endRoute.expectedMessageCount(1);
        producer.sendBody("direct:someStart", someBody);
        endRoute.assertIsSatisfied();
    }
}

运行测试类之后:

  • 第一次测试通过
  • 第二次测试失败,即使它通过路线。

但是,如果我在忽略 test1 的情况下运行测试类,则 test2 会通过。

有人可以解释一下这种行为的原因并告诉我如何解决这个问题吗?

修改
在调试MockEndpoint并且我已经注意到计数器字段意外地在执行一次测试时从测试次数的变化变为零。所以我想知道是否还有一个MockEndpoint实例被创建了?

0 个答案:

没有答案