【问题标题】:REST Assured with JSON schema validation not workingREST 保证 JSON 模式验证不起作用
【发布时间】:2016-01-30 04:57:17
【问题描述】:

我正在使用 Spring Boot 和 REST Assured 来测试 REST API。我正在尝试使用 JSON 模式验证的示例,但它抛出了这个错误:

java.lang.IllegalArgumentException: Schema to use cannot be null

根据文档,架构应该是located in the classpath。我的示例架构位于那里。这是我的项目结构和示例架构位置:

这是我的代码。如果没有架构验证,它可以正常工作。

given().
    contentType("application/json").
when().
    get("http://myExample/users").
then().
    assertThat().body(matchesJsonSchemaInClasspath("example_schema.json"));

【问题讨论】:

    标签: java maven spring-boot rest-assured json-schema-validator


    【解决方案1】:

    当您执行测试用例时,您的完整 src/test 文件夹将被编译,并将所有已编译的文件存储在 target/test-classes 文件中,因此在您将 json 文件保存在 src/test/resources 中时,该文件的副本将在 target/test-classes 文件夹中创建,matchesJsonSchemaInClasspath 方法在执行时使用该文件(您可以在测试执行后转到 target/test-classes 文件夹进行验证)。

    【讨论】:

      【解决方案2】:

      您的架构文件位于rest.resource 包中,但您在调用matchesJsonSchemaInClasspath 时并未提及。您要么需要将文件移动到类路径的根目录(例如,将其放入 src/test/resources),要么将要传递的字符串更改为 matchesJsonSchemaInClasspath

      【讨论】:

      • 谢谢,但我不明白,你的意思是复制路径?`matchesJsonSchemaInClasspath("/src/test/java/rest/resource/asset_schema.json")
      • 不,保持原样调用matchesJsonSchmeaInClasspath 并将文件移动到src/test/resourcessrc/test/java
      猜你喜欢
      • 2018-09-16
      • 1970-01-01
      • 2020-10-15
      • 2014-01-10
      • 1970-01-01
      • 2021-10-16
      • 2018-09-08
      • 2015-07-06
      • 2016-04-23
      相关资源
      最近更新 更多