json - 如何在启用 pretty-print 的情况下对 JsonMarshaller 进行单元测试?

标签 json junit pretty-print objectmapper

我有一个名为 JsonMarshall(T t) 的方法,它接受一个对象并将其转换为 Json 字符串。在此方法中,我使用 Objectmapper 来完成此任务:

mapper.writerWithDefaultPrettyPrinter().writeValueAsString(t)

现在,假设我有一个 ClientName 类,其属性为 Title 和 Name,用于测试。现在,当我尝试使用我的方法将 ClientName 转换为 json 字符串,并通过针对某些预期的 Json 字符串断言其输出来测试此方法,例如:

expectedString =  "{\"title\":\"RandomTitle",\"Name\":\"RandomName\"}"

我有两种情况:

  1. 当我在方法中使用 mapper.writerWithDefaultPrettyPrinter().writeValueAsString(t) 时,测试失败。

  2. 当我只执行 mapper.writeValueAsString(t)

  3. 时测试通过

所以我猜想 writerWithDefaultPrettyPrinter() 的缩进导致测试失败。

有什么想法可以让第一个场景的测试通过吗?

最佳答案

我假设第一个测试失败,因为输出打印得很漂亮,并且包含其他格式符号,例如换行符和空格。

你可以做什么:

  1. 只需在第一个测试方法中使用另一个预期的字符串即可。
  2. 解析被测方法的返回字符串,并将反序列化的对象用于测试方法。
  3. 您可以使用 JsonPath lib用于您的测试(与 XPath 类似)。 我用JsonPathResultMatcher测试基于 Spring 框架的 RESTful Web 服务。

关于json - 如何在启用 pretty-print 的情况下对 JsonMarshaller 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439778/

相关文章:

java - 未在 IntelliJ 中找到匹配方法 main 的测试

python - 无一异常(exception)地获取 python 回溯

python - 在 python 中使用 ASCII 颜色漂亮地打印 JSON

java - 如何使用 Spring 测试具有 @PostConstruct 方法的类的构造函数?

c++ - 在 Eclipse Ubuntu 14 中执行 Python 代码时出现 pretty-print 错误

c# - 在 Json.NET 中如何处理丢失的枚举值以选择另一个枚举值

python - 在 DRF 中序列化自定义相关字段

javascript - 如何合并两个复杂的 JSON 对象,仅具有唯一或不同的值仅显示在结果数组中

javascript - angularJS ng重复字段和特殊字符

unit-testing - 从 grails 2.3 升级到 2.5 后单元测试无法运行