elasticsearch - 如何使用build.gradle为您的测试设置Elasticsearch

标签 elasticsearch gradle build.gradle

因此,我一直在尝试为与Elasticsearch交互的API编写JUnit测试。这就像集成测试,在运行我的代码之前,我需要先设置Elasticsearch。

对于所有测试,我需要创建一个测试任务,该任务将执行以下操作:

  • 从下载zip
    compile group: 'org.elasticsearch.distribution.zip', name: 'elasticsearch', version: '6.1.1', ext: 'pom'
    
  • 运行存在于解压缩文件的/ bin中的elasticsearch可执行文件。运行此可执行文件时,请在命令中将elasticsearch.yml文件作为参数。
  • 运行完所有测试后,停止elasticsearch可执行文件,并清理压缩文件夹。

  • 我可以改进的是,如果Gradle缓存中已经存在zip文件,则不要一次又一次下载它。

    谢谢

    最佳答案

    将以下依赖项添加到build.gradle文件

    configurations {
      elasticDist
    }
    ...
    dependencies { 
      elasticDist group: 'org.elasticsearch.distribution.zip', name: 'elasticsearch', version: '6.1.2', ext: 'zip'
    }
    

    添加任务以解压缩和清理,设置依赖项
    task unzip(type: Copy) {
      // to download distribution
      dependsOn configurations.elasticDist
    
      from { // use of closure defers evaluation until execution time
        configurations.elasticDist.collect { zipTree(it) }
      }
    
      into file("${buildDir}/your/destination")
    }
    
    task cleanElastic(type:Delete) {
       delete file("${buildDir}/your/destination")
    }
    
    test.dependsOn('unzip')
    test.finalizedBy('cleanElastic')
    

    使用您选择的测试框架,配置setUptearDown分别启动和停止 flex 。

    关于elasticsearch - 如何使用build.gradle为您的测试设置Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48365090/

    相关文章:

    elasticsearch - Elastic Search不允许我索引先前设置为false的新模板版本中的字段

    elasticsearch - Elasticsearch中的SpanWithInQuery和SpanContainingQuery有什么区别?

    scala - Gradle scala 项目和私有(private)编译选项

    android - :app:compileDebugJavaWithJavac错误:错误读取C:\…\.android\build-cache\167256a7a343274ac6d230f06a5526cf83b55ac4\output\jars

    c# - C#NEST ElasticSearch Default_Search分析器

    api - 如何知道 Elasticsearch 上是否存在电子邮件地址?

    gradle - 如何在 gradle build 中定义可重用的 block

    intellij-idea - 在Intellij中排除Gradle多项目中的文件

    android - Gradle依赖问题android

    gradle - 如何排除模块 cxf-rt-transports-http