gpt4 book ai didi

java - ReflectionTestUtils.setfield 不会覆盖本地项目属性

转载 作者:行者123 更新时间:2023-11-30 06:47:31 26 4
gpt4 key购买 nike

我正在努力解决如何覆盖 .yml 文件内的属性文件

我们使用Spring框架并使用注释(例如@InjectMocks)。

我在配置项目 YML 文件中声明了一个名为“one-platform-properties”的属性,名为 paysafe-ss-fx-service.yml。它设置一个名为 maxRecoveryAge=0 的变量。这本质上是一个生存缓冲时间。

  oneplatform:
environment: local
publisher:
rates:
maxRecoveryAge: 0
interPublishDelay: 500

问题是我希望能够在测试运行时对此进行调整。将缓冲区设置为 1 小时、5 小时和 24 小时。

我在测试中使用 ReflectionTestUtils.setfield(PublisherClass, "maxDocumentAge", 1, int.class) 调用来调整时间,但该值没有被覆盖。当我对变量进行监视时,它正在我的测试工具中工作,但是一旦测试运行渗透到微服务代码中,覆盖的值就会丢失。关于如何让被覆盖的值在所有测试中持续存在有什么想法吗?

我的目标是在测试运行中使用不同的变体:

ReflectionTestUtils.setField(new FxRatesEventPublisher(),"maxRecoveryAge",1,int.class);
ReflectionTestUtils.setField(new FxRatesEventPublisher(),"maxRecoveryAge",5,int.class);
ReflectionTestUtils.setField(new FxRatesEventPublisher(),"maxRecoveryAge",24,int.class);

并实质上覆盖项目定义的属性文件中定义的值。

最佳答案

ReflectionTestUtils.setField(producerConfiguration, "messageProducer", realProducer);
Object target = AopTestUtils.getUltimateTargetObject(fxRatesEventPublisher);
int recoveryAge = -1;
ReflectionTestUtils.setField(target, "maxRecoveryAge", recoveryAge);

关于java - ReflectionTestUtils.setfield 不会覆盖本地项目属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440170/

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