我在应用程序中使用Microprofile Config(@Inject,而不是ConfigProvider)。我有一个采用不同值的不同分支的配置。为了测试(Arquillian)代码中的所有路径,我需要能够在运行时更改此值。有人可以提供有关实现此目标的提示吗?我的属性是使用系统属性设置的,但是我对如何处理它持开放态度。

最佳答案

您可以注册一个易于配置的ConfigSource
您可以看一下我为mp-config TCK自己写的一个:
https://github.com/eclipse/microprofile-config/blob/master/tck/src/main/java/org/eclipse/microprofile/config/tck/configsources/ConfigurableConfigSource.java

要将此ConfigSource添加到Arquillian @Deployment中,请检查此测试:
https://github.com/eclipse/microprofile-config/blob/1499b7bf734eb1710fe3b7fbdbbcb1ca0983e4cd/tck/src/main/java/org/eclipse/microprofile/config/tck/ConfigAccessorTest.java#L52

重要的几行是:

.addClass(ConfigurableConfigSource.class)
.addAsServiceProvider(ConfigSource.class, ConfigurableConfigSource.class)


然后调整值

ConfigurableConfigSource.configure(config, "my.config.entry", "some new value");

10-07 13:06