Java 如何将Src/Test/Resources文件夹指定为XSD资源路径
我正在使用java和REST Assured创建自动化web服务测试 目前,我正在根据XSD文件验证收到的XML响应模式 下面是我的代码:Java 如何将Src/Test/Resources文件夹指定为XSD资源路径,java,xml,xsd,Java,Xml,Xsd,我正在使用java和REST Assured创建自动化web服务测试 目前,我正在根据XSD文件验证收到的XML响应模式 下面是我的代码: InputStream ValidXsd = Thread.currentThread().getContextClassLoader().getResourceAsStream("BR000AcceptSchema.xsd"); RestAssured.given() .auth() .preemptive() .basi
InputStream ValidXsd = Thread.currentThread().getContextClassLoader().getResourceAsStream("BR000AcceptSchema.xsd");
RestAssured.given()
.auth()
.preemptive()
.basic(theUsername, thePassword)
.contentType(theContentType)
.header("Accept",theContentType)
.body(theXMLBody)
.when()
.post(theURL)
.then()
.body(io.restassured.matcher.RestAssuredMatchers.matchesXsd(ValidXsd));
我的问题是这个XSD文件当前存储在src/main/resources中,但我需要将其移动到src/test/resources
但是,当我执行此操作时,测试失败,因为代码没有拾取XSD文件(BR000AcceptSchema.XSD)
有人能告诉我如何为这个XSD指定在src/test/resources中查找的代码吗
我认为问题与将XSD添加到类/构建路径有关。XSD文件存储在src/test/resources中的一个子文件夹中,我忘了在文件路径中指定它 下面的代码现在可以工作了:
InputStream ValidXsd = Thread.currentThread().getContextClassLoader().getResourceAsStream("US46052/BR000AcceptSchema.xsd");
RestAssured.given()
.auth()
.preemptive()
.basic(theUsername, thePassword)
.contentType(theContentType)
.header("Accept",theContentType)
.body(theXMLBody)
.when()
.post(theURL)
.then()
.body(io.restassured.matcher.RestAssuredMatchers.matchesXsd(ValidXsd));
唯一需要更改的是第一行代码中XSD的文件路径是否是测试代码(在
src/test/java
中)?是的,在src/test/java
中的代码测试功能代码,然后应该可以发现,我看不出您的代码有任何错误。首先尝试getResource(…)
或getResources(…)
并检查返回的内容。另一个问题可能是由于某种原因,资源没有复制到目标文件夹。如果资源存在,请检查目标文件夹。如果您在IDE中,请检查生成器日志。如果您在Eclipse中使用Maven,请检查m2控制台。@lexicore您好,我已经尝试了System.out.println(新文件(“BR000AcceptSchema.xsd”).getAbsolutePath()代码>,返回:C:\Users\username\Desktop\Automation Testing\project anem\BR000AcceptSchema.xsd。我还在项目中搜索了这个XSD文件,它只出现在project name\src\test\resources\US46052和project name\target\classes\main中\US46052@lexicore我已经成功地自我诊断了这个问题,XSD文件包含在src/test/resources的子文件夹中!