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

如何编写解析JSON响应并校验字段规则的JUnit测试用例

JUnit JSON字段校验测试实现方案

你当前已完成JSON文件读取、根结构解析的基础逻辑,可按照以下逻辑补全校验规则:

实现思路

  • 遍历data数组内所有JSON对象,避免仅校验首个元素导致漏测
  • 对每个对象先读取valuesdata字段的布尔值
  • 分支校验必填字段:valuesdata为true时验证values字段存在,为false时验证sql字段存在

完整可运行代码

import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.nio.file.Files;
import java.nio.file.Paths;

public class JsonStructureTest {
    // 替换为你的JSON文件实际路径
    private static final String INPUT_FILE_PATH = "your_test_json_path.json";

    @Test
    @DisplayName("校验JSON中valuesdata与配套字段的对应关系")
    public void validateJsonValuesdataRule() throws Exception {
        // 读取JSON文件内容
        String content = new String(Files.readAllBytes(Paths.get(INPUT_FILE_PATH)));
        JSONObject rootJson = new JSONObject(content);
        JSONArray dataArray = rootJson.getJSONArray("data");

        // 遍历所有data元素校验规则
        for (int i = 0; i < dataArray.length(); i++) {
            JSONObject currentObj = dataArray.getJSONObject(i);
            boolean isValuesData = currentObj.getBoolean("valuesdata");

            if (isValuesData) {
                // valuesdata为true时必须存在values字段
                Assertions.assertTrue(currentObj.has("values"),
                        String.format("第%d个元素valuesdata为true,但缺失values字段", i));
            } else {
                // valuesdata为false时必须存在sql字段
                Assertions.assertTrue(currentObj.has("sql"),
                        String.format("第%d个元素valuesdata为false,但缺失sql字段", i));
            }
        }
    }
}

注意事项

  • 上述代码使用JUnit 5的Assertions类做断言,和你使用的@Test、@DisplayName注解版本保持统一,无需混用JUnit 4的Assert类
  • 断言中补充了元素位置的错误提示,测试不通过时可直接定位到出错的JSON节点,排查效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:54:10