在Spring Boot中加载上下文之前启动嵌入式服务器以进行测试

问题描述 投票:0回答:1

我正在使用Spring Boot,Spring Data JPA和Spring Data Elasticsearch研究sample application。我希望能够将单元测试作为管道构建的一部分运行,但是当服务调用所述ES服务器时,它们需要Elasticsearch运行才能工作。 SQL工作正常,因为我使用的是内存中的H2实例。

我已经实现了一些代码来尝试将ES作为“嵌入式”服务器启动。嵌入式服务器工作正常,但似乎,至少从我所知道的,它是在上下文加载后启动的。最重要的是在ElasticSearchConfiguration之后做了这件事。

我想我需要将AbstractElasticsearchTest中的代码重构成一个单独的类,它可以在ElasticSearchConfiguration生成客户端/模板之前运行,但我不知道该怎么做,也不知道如何谷歌说过程。

Spring Boot中是否有一些机制可用于在运行任何配置之前启动嵌入式服务器?或者是否有某些方法可以在创建客户端/模板之前增强ElasticSearchConfiguration来执行此操作,但仅在运行单元测试时?

编辑:所以,只是为了更具体一点......我正在寻找的是在“嵌入式​​”模式下运行ES 5的方法/方法或者如何模拟Spring Data ES代码以使其适用于CI服务器。目前上面链接的代码是混合单元测试和集成测试,我知道,因为它正在调用物理ES服务器。这就是我想要纠正的:我应该能够存根/模拟足够的底层Spring Data代码,以使单元测试认为它正在与真实交易相提并论。然后,我可以更改测试,确定文档是否已将其转换为ES并将类似提前搜索的内容测试为集成测试,以便在CI或Sonar运行时不运行。

spring spring-boot spring-data spring-data-elasticsearch
1个回答
0
投票

好吧,对于那些可能会在未来回到这里的人,this commit展示了我为让ES作为“嵌入式”运行而做出的改变。

它的螺母和螺栓是将节点作为“本地”启动然后物理返回node.client()。然后在获取客户端的Spring Bean方法中,检查是否已启用“嵌入”,如果是,则启动节点并返回其客户端(本地客户端),如果不是正常构建客户端。

© www.soinside.com 2019 - 2024. All rights reserved.