Java JSON 单元测试通过但值错误

Java JSON unit test pass with wrong value

我有以下功能:

public class NorthboundApiLogicTest {

  @Test
  public void testIfParametersValuesAreCorrect() {
    String body = "{\"exception\":\"world\",\"error\":\"Not Found\",\"message\":\"hello\""
        + ",\"timestamp\":\"2020-01-07T12:26:48.334386Z\",\"status\":\"404\"}";
    try {
      JSONAssert.assertEquals("{message:hello, exception:world, status:403, error:Not Found}", 
          body, false);
    } catch (Exception e) {
      System.err.println(e);
    }
    System.out.println(body);
  }
}

我运行用Maven进行了这个测试,奇怪的是它成功通过了。

然而,它不应该,因为我断言 status=403 但值是 404。我究竟做错了什么?

它甚至在对结构执行断言之前就解析 JSON 失败,而您只是通过 catch 记录它。

catch (Exception e) {
      System.err.println(e);
}

您需要让该异常从方法中抛出,或者捕获它并使用适当的消息调用 fail()

然后解决不可解析的问题 JSON,当然!