gpt4 book ai didi

spring - 在 Spring 中进行集成测试时如何模拟 Eureka?

转载 作者:行者123 更新时间:2023-12-04 04:46:07 24 4
gpt4 key购买 nike

我正在运行一个简单的 Junit 测试 Spring Boot 中的 Controller 。测试代码如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {FrontControllerApplication.class})
@WebAppConfiguration
@ComponentScan
@IntegrationTest({"server.port:0", "eureka.client.registerWithEureka:false", "eureka.client.fetchRegistry:false"})
@ActiveProfiles("integrationTest")
public class MyControllerIT {

在 application-integrationTest.properties 我有以下 Eureka 设置:
####### Eureka
eureka.serviceUrl.default=http://localhost:8767/eureka/
eureka.printDeltaFullDiff=false
eureka.client.refresh.interval=1
eureka.appinfo.replicate.interval=1
eureka.serviceUrlPollIntervalMs=1000
eureka.name=${spring.application.name}

####### Netflix Eureka #######
eureka.client.serviceUrl.defaultZone=http://localhost:8767/eureka/
eureka.client.instanceInfoReplicationIntervalSeconds=1
eureka.client.initialInstanceInfoReplicationIntervalSeconds=0
eureka.instance.virtualHostName=${spring.application.name}
eureka.instance.preferIpAddress=true
eureka.instance.initialStatus=DOWN
eureka.instance.leaseRenewalIntervalInSeconds=3
eureka.instance.leaseExpirationDurationInSeconds=10
eureka.instance.metadataMap.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}
eureka.eurekaserver.connectionIdleTimeoutInSeconds=5
eureka.responseCacheAutoExpirationInSeconds=5

当 junit 测试开始时,我看到以下内容:
2015-09-16 16:46:03,905 ERROR localhost-startStop-1 com.netflix.discovery.DiscoveryClient Can't get a response from http://localhost:8767/eureka/apps/
Can't contact any eureka nodes - possibly a security group issue?
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:184) ~[jersey-apache-client4-1.11.jar:1.11]

测试通过,这不是问题 ,但我看到很多与 Eureka 有关的异常堆栈跟踪。问题是是否有一种方法可以模拟 eureka 或另一种方法可以在进行测试时跳过它?

如果测试失败并且 tst 运行得更快,那么好处将更容易看到相关的堆栈跟踪

最佳答案

另一种解决方案是在 test/resources 下的 application.properties 或 application.yml 文件中禁用 Eureka Client

应用程序属性:
eureka.client.enabled=false
应用程序.yml:
eureka:
client:
enabled: false

这样做的好处是不需要记住为每个需要禁用 Eureka 客户端的 JUnit 测试包含系统属性。

关于spring - 在 Spring 中进行集成测试时如何模拟 Eureka?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32626051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com