Java 即使断言失败,TestNG也不会使测试用例失败

Java 即使断言失败,TestNG也不会使测试用例失败,java,rest,testng,rest-assured,assertion,Java,Rest,Testng,Rest Assured,Assertion,以下是测试运行的输出: @Test public void getProfile() { RestAssured.baseURI = URL.baseURL; Response res = given().header(URL.contentType, URL.cookieType).when().get(URL.getURL).then().assertThat(). statusCode(200).and().ex

以下是测试运行的输出:

@Test
public void getProfile() {
    RestAssured.baseURI = URL.baseURL;
    Response res = given().header(URL.contentType, 
               URL.cookieType).when().get(URL.getURL).then().assertThat().
               statusCode(200).and().extract().response();
    String data = res.asString();
    System.out.println(data);
}

TestNG现在将此情况标记为通过,即使响应不是预期的。我怎样才能让它工作?我只想使用assertThat语句。

您必须将测试结果保存为布尔值或数值

稍后,您必须使用断言将预期测试结果与实际测试结果进行比较:

{"status_code":401,"message":"Authentication failed."}
数字比较:

Boolean testPassed = isTestPassed();
Assert.assertTrue("The test result is: "+testPassed,testPassed);
试试下面的任何一个

long testValue = getTestResponseCode();
Assert.assertEquals("Actual test respoonse code is: "+testValue,testValue);

这是不够的信息,我们无法看到实际发生了什么,也无法判断问题出在哪里。您可以添加HTTP流量的捕获吗?您是否已在调试器中逐步完成了代码?尝试将长链方法调用集拆分为单独的行,并在每个步骤中逐步执行或打印调试输出,以确定实际发生的情况。您的输出显示响应正文,而不是状态代码。它可以返回200 OK和任何响应体。检查res.statusCode()。当某些期望失败时,RestAssured会引发异常,而抛出异常的TestNG会导致测试失败
given().contentType(ContentType.JSON).queryParam("text","lands").when().get("http://services.groupkt.com/country/search").then().assertThat().statusCode(200).log().all();

            int actualStatusCode=given().contentType(ContentType.JSON).queryParam("page","2").when().get("https://reqres.in/api/users").statusCode();
            Assert.assertEquals(200, actualStatusCode,"The status code mistatches");