如何为 Rest Assured 3.0.3(使用 Java 和 TestNG)声明默认解析器?
Posted
技术标签:
【中文标题】如何为 Rest Assured 3.0.3(使用 Java 和 TestNG)声明默认解析器?【英文标题】:How do I declare a default parser for Rest Assured 3.0.3 (using Java and TestNG)? 【发布时间】:2017-11-14 04:29:02 【问题描述】:大家好,
我是一名公认的 Java 程序员新手,但我会仔细研究文档和常见问题解答以尝试解决过去的问题。然而,这是一个我无法克服的问题。我正在使用 RestAssured(版本 3.0.3,由 Maven 提取)并且无法让 RestAssured 解析“文本/纯文本”内容(相反,我无法让 Java 编译代码来执行此操作)。
这会编译但会报错:
import static io.restassured.RestAssured.*;
import static io.restassured.matcher.RestAssuredMatchers.*;
import static org.hamcrest.Matchers.*;
import static io.restassured.module.jsv.JsonSchemaValidator.*;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.testng.annotations.AfterClass;
public class TestNG2
/*
userName, passWord and server defined here as protected static Strings
*/
@Test
public void filter_Asset()
given().
auth().basic(userName, passWord).
when().
get ("http://" + server +"/api/filter?type=$tAsset").
then().
statusCode(200).
body("count", greaterThan(0));
错误:
java.lang.IllegalStateException:预期的响应正文将被验证为 JSON、html 或 XML,但不支持开箱即用的内容类型“text/plain”。 尝试使用以下方法注册自定义解析器: RestAssured.registerParser("text/plain", );
但是,当我尝试在 filter_Asset 测试中包含以下行时:
RestAssured.registerParser("text/plain", Parser.JSON);
代码将无法编译并出现以下问题:
java.lang.Error:未解决的编译问题: RestAssured 无法解决 解析器无法解析为变量
当我尝试使用以下声明时,我收到了类似的投诉:
RestAssured.defaultParser = Parser.JSON;
不管怎样,我正在使用 Windows 7 64 位机器。使用 Eclipse Neon.3 (4.6.3),我的 JDK 是 1.8_131
我已经查阅了 RestAssured 的使用和文档页面,相信我正确地导入了包等等。我是否在某处犯了新手错误?
【问题讨论】:
【参考方案1】:这是一个菜鸟的错误!
除了静态导入类方法外,编译器还需要导入以下类:
import io.restassured.RestAssured;
import io.restassured.parsing.Parser;
在这些声明之后,我能够在 filter_Asset 测试中注册默认解析器:
RestAssured.registerParser("text/plain", Parser.JSON);
【讨论】:
以上是关于如何为 Rest Assured 3.0.3(使用 Java 和 TestNG)声明默认解析器?的主要内容,如果未能解决你的问题,请参考以下文章