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

标签 java spring microservices

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

相关文章:

java - 如何缩短同一方法的大量调用?

java - Cloud Foundry Spring Boot 应用程序中的连接被拒绝错误

java - 具有 ElasticSearch Reactive Streams 的 Spring Boot 应用程序的架构

spring - 无法在 HikariConfig 类加载器或线程上下文中加载驱动程序类 oracle.jdbc.OracleDriver

spring-boot - 一个 Jhipster 应用程序微服务如何在另一个应用程序中调用..?

microservices - 如何在 AWS Lambda 上构建无服务器框架和微服务

Java:了解 String replaceAll() 方法

java - 为什么在尝试读取文件时会出现 NullPointerException?

Java游戏无法运行

java - 带有 class.forname() 的 Spring