博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES学习笔记之-集成测试的简单学习
阅读量:6120 次
发布时间:2019-06-21

本文共 1711 字,大约阅读时间需要 5 分钟。

集成测试在es源码中的用法比较简单。我选择的切入口是delete-by-query插件。

将es插件的源码导入intellij后,直接运行类DeleteByQueryRestIT, 就会运行所有的集成测试用例。

-ea -Dtests.security.manager=false

这个运行结果,会让我产生两个疑问:

  1. 这个类里面没有test注解的方法,其入口在哪里?
  2. resource/rest-api-spec目录下,只有一个yaml文件,这些测试用例来自哪里?

通过查看其父类ESRestTestCase,可以看到里面有test注解的test方法,而且设置断点,可以确定该方法是测试的入口。

那么500多个测试用例来自哪里呢?

ESRestTestCase@BeforeClass注解的方法

@BeforeClass    public static void initExecutionContext() throws IOException, RestException {        String[] specPaths = resolvePathsProperty(REST_TESTS_SPEC, DEFAULT_SPEC_PATH);        RestSpec restSpec = null;        FileSystem fileSystem = getFileSystem();        // don't make a try-with, getFileSystem returns null        // ... and you can't close() the default filesystem        try {            restSpec = RestSpec.parseFrom(fileSystem, DEFAULT_SPEC_PATH, specPaths);        } finally {            IOUtils.close(fileSystem);        }        validateSpec(restSpec);        restTestExecutionContext = new RestTestExecutionContext(restSpec);    }

通过了解这个方法的源码,可以了解到在elasticsearch-2.4.5-tests.jar里面,集成了这些测试用例。

这些测试用例的源码就在elasticsearch/rest-api-spec目录下。

那么如何只运行插件中的测试用例而忽略jar包中的测试用例呢?

-Dtests.rest.load_packaged=false

直接运行,会发现测试用例运行失败。原来delete-by-query的测试用例有依赖。先编译源码:

编译前修改项目源码的elasticsearch/pom.xml文件, 不能略过集成测试。

false

然后编译delete-by-query插件

elasticsearch/plugins/delete-by-query$ mvn install

编译完成后再运行DeleteByQueryRestIT类,即可成功运行插件的测试用例。

-ea -Dtests.security.manager=false -Dtests.rest.load_packaged=false

这里的测试用例会启用一个独立的es集群,用来运行测试用例,运行完成后再shutdown. 其功能由如下的脚本提供:

elasticsearch/dev-tools/src/main/resources/integration-tests.xml

参考:

了解了集成测试插件的运行过程后,就可以在开发插件时自行实现集成测试的功能。而且通过yaml+json的方式,能够做到测试用例的复用。

转载于:https://blog.51cto.com/sbp810050504/2334243

你可能感兴趣的文章
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>
写给对前途迷茫的朋友:五句话定会改变你的人生
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>