我正在使用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"));
答案 0 :(得分:6)
您的架构文件位于rest.resource
包中,但在调用matchesJsonSchemaInClasspath
时您没有提及。您需要将文件移动到类路径的根目录(例如,将其放在src/test/resources
中),或者将您传递的字符串更改为matchesJsonSchemaInClasspath
。
答案 1 :(得分:0)
当你执行你的测试用例时,你完整的 src/test 文件夹会被编译,并且它将所有编译的文件存储在 target/test-classes 文件中,所以在你的情况下,当你将 json 文件保存在 src/test/resources 中时,将在 target/test-classes 文件夹中创建该文件的副本,并且匹配 JsonSchemaInClasspath 方法在执行时使用该文件(您可以在测试执行后转到 target/test-classes 文件夹进行验证)。