java - Junit 无法使用 System.getenv 从 local.settings.json 获取值
问题描述
从 local.settings.json 获取价值
String url = System.getenv("SCRUBBER_DATA_API");
Junit 在运行代码时抛出以下错误 - 文件 - UploadConsumptionTest.java
java.lang.NullPointerException
at net.scorpiogroup.pool.pnp.functions.uploadconsumptionfunction.Uploadconsumption.getScrubberData(Uploadconsumption.java:319)
at net.scorpiogroup.pool.pnp.functions.uploadconsumptionfunction.Uploadconsumption.lambda$run$8(Uploadconsumption.java:217)
at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1699)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at net.scorpiogroup.pool.pnp.functions.uploadconsumptionfunction.Uploadconsumption.run(Uploadconsumption.java:192)
at net.scorpiogroup.pool.pnp.functions.uploadconsumptionfunction.UploadconsumptionTest.testUploadConsumptionTxnAndConPPSAndConsAssesAndPoolDaysWithSucc(UploadconsumptionTest.java:337)
local.settings.json
{
"IsEncrypted": false,
"Values": {
"SCRUBBER_DATA_API": "*apiString*"
}
},
"Host": {
"LocalHttpPort": 8991,
"10.80.20.5": 8991,
"CORS": "*"
}
}
如果我用特定的字符串值替换 'System.getenv("key")' 那么它不会给出错误。
解决方案
您可以从资源中读取这样的 json 文件。
InputStream inJson = UploadConsumptionTest.class.getResourceAsStream("/local.settings.json");
您必须将 json 文件放入test/resources/
. 否则它将无法正常工作。
如果您想将 inJson 转换为您的对象,那么您可以根据需要使用 Jackson 或 gson。
IE
YourObj obj = new ObjectMapper().readValue(inJson, YourObj.class);
推荐阅读
- asp.net-mvc - 将模式(弹出表单)中的数据保存到本地数据库 - asp.net mvc
- python - 如何检查变量是否为整数?
- deepstream.io - 尝试通过 npm 安装 deepstream.io
- python - 在 Jupyter Notebook 上加载 plotly updatemenus 时,如何仅显示一个跟踪?
- vue.js - 如果在 vuejs 中第一次选择,则禁用日期
- java - 无法访问在 Java 中作为参数传递的部分字节数组
- grep - 使用正则表达式从 txt 文件中提取内容
- javascript - 从字符串中生成最多 32 个字节的 substirng
- php - 如何从 CodeIgniter 和 MySql 表中统计调查的房屋数量
- windows-10 - 未安装 SMB 服务