elasticsearch,Java,Unit Testing,Junit,elasticsearch" /> elasticsearch,Java,Unit Testing,Junit,elasticsearch" />

Java 使用JUnit对自定义ElasticSearch客户端进行单元测试

Java 使用JUnit对自定义ElasticSearch客户端进行单元测试,java,unit-testing,junit,elasticsearch,Java,Unit Testing,Junit,elasticsearch,我已经创建了一个自定义的弹性搜索客户端。我需要在各种功能上部署单元测试。我该怎么做 例如,在JUnit中,我使用这些-> assertEquals(expectedOutput, actualOutput); 这里的问题是实际上没有返回值。这些查询执行和操作对象。我想对各种功能进行单元测试 例如,我想看看index()是否正常工作。我真的不想实际索引数据并检查它是否已被索引,因为我现在不做集成测试。我可以只做单元测试吗 以下是我的客户提供的方法。我应该如何在这里部署单元测试 @Overrid

我已经创建了一个自定义的弹性搜索客户端。我需要在各种功能上部署单元测试。我该怎么做

例如,在JUnit中,我使用这些->

assertEquals(expectedOutput, actualOutput); 
这里的问题是实际上没有返回值。这些查询执行和操作对象。我想对各种功能进行单元测试

例如,我想看看index()是否正常工作。我真的不想实际索引数据并检查它是否已被索引,因为我现在不做集成测试。我可以只做单元测试吗

以下是我的客户提供的方法。我应该如何在这里部署单元测试

@Override
        public ActionFuture<IndexResponse> index(IndexRequest request)
            {
                TimerContext indexTimerContext=indexTimer.time();
                super.index(request));
                indexTimerContext.stop();
            }
@覆盖
公共行动未来索引(IndexRequest请求)
{
TimerContext indexTimerContext=indexTimer.time();
超级索引(请求);
index timercontext.stop();
}
我真的应该怎么做呢?

ElasticSearch有自己的和() 本教程介绍单元和集成测试! 如果您想使用其他框架,可以使用mockitoeasymock。在您的情况下,您必须检查该方法
index(IndexRequest请求)
调用
indexTimer.time()
indexTimerContext.stop()
因此必须模拟
indexTimer
和 验证呼叫。看

编辑 我从未使用过ElasticSearch,但您的单元测试将如下所示

@Test
public void testIndex() {

    clientTest = Mockito.spy(new MyClient());
    //this is a field, which we mock
    IndexTimer indexTimerSpy = Mockito.spy(new IndexTimer());
    //TimerContext we mock too
    TimerContext timerContextSpy = Mockito.spy(new TimerContext());
    //IndexTimer.time returns our timer context
    Mockito.doReturn(timerContextSpy).when(indexTimerSpy).time();
    //set indexTimer
    clientTest.setIndexTimer(indexTimerSpy);
    //calls method under test
    clientTest.index(null);
    //verify calls of methods
    Mockito.verify(indexTimerSpy).time();
    Mockito.verify(timerContextSpy).stop();

    // Prevent/stub logic when calling super.index(request) 
    //Mockito.doNothing().when((YourSuperclass)clientTest).index();

}

我应该模仿indexTimer还是IndexMerContext?time()将返回timerContext[“new timerContext(this,clock)”]的新实例。您必须模拟所有对象indexTimer indexTimerContext和您的类。我已经编辑了我的答案。我认为我的例子很清楚,elasticsearch测试框架等于零。不是很有用的东西。我在哪里可以找到合适的例子?