首页 > 解决方案 > 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")' 那么它不会给出错误。

标签: javajunit

解决方案


您可以从资源中读取这样的 json 文件。

InputStream inJson = UploadConsumptionTest.class.getResourceAsStream("/local.settings.json");

您必须将 json 文件放入test/resources/. 否则它将无法正常工作。

如果您想将 inJson 转换为您的对象,那么您可以根据需要使用 Jackson 或 gson。

IE

YourObj obj = new ObjectMapper().readValue(inJson, YourObj.class);

推荐阅读