java - 微简介 | 配置 - 使用动态值进行测试
问题描述
我在我的应用程序中使用 Microprofile Config ( @Inject
, not 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");
推荐阅读
- c# - System.ComponentModel.Win32Exception Process.Start
- javascript - React redux 不更新全局状态
- python - 混淆 plt 和 plot 以获得在 Tkinter 框架上的画布上显示的图
- android - 是否可以有两个以上的浮动操作按钮?
- php - DB:Raw 不适用于 postgres 中的日期格式
- c# - 从控制器调用托管在同一服务器上的 Web API,auth 的 AD 名称是 IIS 应用程序池名称而不是用户名
- aws-lambda - AWS Lambda - 如何更改处理程序值
- html - 为什么我不能在部分和菜单上使用 margin-top 0?
- reactjs - 从 React 组件调用 WebSocket 时,有没有办法避免连续重新渲染?
- solr - solr 拼写检查没有得到想要的结果