我正在努力解决如何覆盖 .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/