You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用System.getProperty为字符串列表设置多默认值的方法咨询

问题解答

1. 原代码运行条件

只要满足以下前提,你提供的代码就可以正常运行:

  • 项目中已正确引入KriaStubRiskAnalysis类的相关依赖,且该类的构造方法、stub方法的入参数量、类型与代码中传参完全匹配
  • 未手动设置对应系统属性的场景下,你填写的默认值均合法:比如C:/ChromeDriver/chromedriver.exe路径真实存在、接口地址、业务参考号、MRN等参数符合业务要求
  • 若你手动设置了kriastubriskanalysis.valTotal、kriastubriskanalysis.valWait对应的系统属性,确保属性值为合法整数,否则Integer.parseInt会抛出数字格式异常

2. 多默认值设置方案

你当前的写法只能生成单元素的字符串数组,要支持多个默认值,可以约定系统属性的多个值用固定分隔符(比如英文逗号)分割,示例代码如下:

// 约定风险等级多个值用英文逗号分隔,默认设置3、4、5三个风险等级
String riskLevelConfig = System.getProperty("kriastubriskanalysis.valRiskLevel", "3,4,5");
String[] riskLevels = riskLevelConfig.split(",");
// 替换原来的单元素数组,将riskLevels作为参数传入stub方法即可

后续你也可以通过启动参数传入自定义多值,比如添加JVM启动参数-Dkriastubriskanalysis.valRiskLevel=1,2,4就能自定义传入3个风险等级。

3. 测试for循环逻辑的实现方案

  • 方案1:用上述分隔符配置方案,仅调整JVM启动参数即可验证不同多值场景:比如测试全量等级遍历就传-Dkriastubriskanalysis.valRiskLevel=1,2,3,4,5,测试边界场景就传-Dkriastubriskanalysis.valRiskLevel=1,5,无需修改业务代码,适合功能测试
  • 方案2:单元测试场景直接mockSystem.getProperty方法的返回值,用Mockito等测试框架指定kriastubriskanalysis.valRiskLevel返回你需要的多值组合字符串,不需要依赖启动参数,单元测试更灵活
  • 方案3:临时快速验证的场景可以直接硬编码测试用的多值数组,比如直接写成new String[]{"1","2","3","4"},验证完for循环逻辑再换回原有配置读取代码即可

内容的提问来源于stack exchange,提问作者Donbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:57:01