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

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

米裕
2023-03-14

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

assertEquals(expectedOutput, actualOutput); 

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

@Override
        public ActionFuture<IndexResponse> index(IndexRequest request)
            {
                TimerContext indexTimerContext=indexTimer.time();
                super.index(request));
                indexTimerContext.stop();
            }

我该如何着手做这件事呢?

共有1个答案

卫劲
2023-03-14

ElasticSearch有自己的测试框架,(断言)教程描述了单元和集成测试!如果您想使用其他框架,可以使用mockito或easymock。在您的情况下,您必须检查方法index(IndexRequest request)调用indextimer.time()indextimercontext.stop(),因此您必须模拟indextimer并验证调用。使用Mockito查看Java验证void方法调用n次

编辑:我从未使用过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();

}
 类似资料:
  • 我编写了以下来让Jackson将一个数组的整数序列化为JSON: 此处使用该类: 我想测试序列化程序的行为,并得出以下结论: 但是,不向写入任何内容。我做错了什么?

  • 我是TDD的忠实粉丝,我通常在编写代码之前为我的大学作业编写测试用例。下面是我作业的界面:

  • 我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。

  • 最近,我尝试为akka参与者编写一些单元测试,以测试参与者消息流。我在测试中观察到一些奇怪的行为: 下一个 在我的代码中,我有: 基本上,有时(很少)这样的测试失败(在另一个操作系统上),并且抛出processMessage方法的异常(由于业务逻辑导致的IllegalStateException)。

  • 我正在为我的Spring MVC控制器设置单元测试,并试图利用Spring MVC测试框架。对于控制器中的每个endpoint,我希望确保只有具有指定权限的用户才能访问。我的问题是,在使用mockMvc工具解决这个问题时,我使用了一个自定义用户实现,并获得了类强制转换异常。 对于每个请求,我希望它看起来像这样: 我想以某种方式调整上述语句,以指定我的自定义用户主体。请参见下面Spring的用户方法

  • 问题内容: 我目前正在编写Java客户端服务器应用程序。所以我想实现两个库,一个用于客户端,一个用于服务器。客户端服务器通信具有非常严格的协议,我不打算使用JUnit进行测试。 作为构建工具,我使用Maven和Husdon Server进行持续集成。 实际上,我对如何测试这些客户端/服务器库没有什么好主意。 我得到以下方法: 只需编写一个虚拟客户端来测试服务器,然后编写一个虚拟服务器来测试客户端。