我正在使用休息电话进行一些测试。 UI测试。 在调用rest调用之后,我希望它始终以相同的顺序返回对象中的字段。我能做些什么? 有assertEquals("一些字符串实际上是休息调用的o / p",actualString);在我的测试中。 但是在课堂上再添加一个字段后,我发现它有时会以不同的方式返回休息状态。 所以我希望在返回的json中有固定的字段顺序,如果我调用rest call。
我正在考虑在转换后的java对象上使用json转换和断言。 如下所示:
Gson gson = new Gson();
String json = gson.toJson(badIndicatorsdata7.getData());
MyClass indicatorDto = gson.fromJson(json , MyClass.class);
但是我在这一行上遇到了异常
MyClass indicatorDto = gson.fromJson(json , MyClass.class);
java.lang.NoClassDefFoundError: Lcom/ideas/tetris/pacman/services/dateservice/dto/DateParameter;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2300)
at java.lang.Class.getDeclaredFields(Class.java:1745)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:109)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:72)
at com.google.gson.Gson.getAdapter(Gson.java:349)
at com.google.gson.Gson.fromJson(Gson.java:790)
at com.google.gson.Gson.fromJson(Gson.java:757)
at com.google.gson.Gson.fromJson(Gson.java:706)
at com.google.gson.Gson.fromJson(Gson.java:678)
at com.google.gson.Gson$fromJson.call(Unknown Source)
我希望下面的休息o / p始终保持相同的顺序
[
{
"happy": true,
"social": false,
}
]
快乐和社交不应该改变他们的秩序。他们是一种方式吗?
答案 0 :(得分:0)
快乐和社交不应该改变他们的秩序。他们是一种方式吗?
嗯,那只是一个JSON对象。很少(IME)订单应该重要 - 而这看起来并不像实际导致你看到的失败。
我建议为了测试目的,你有一些代码,给定两个JSON对象,将它们放入一些规范形式 - 但你的生产代码不应该关心物业发生的顺序......这将是非常脆弱的。
如果您真的关心订购,我建议您创建一个键/值对列表,而不仅仅是一个JSON对象。那意味着保持秩序。
要解决您实际看到的问题,但是,您似乎需要找到DateParameter
的来源,并确保它在您的类路径中。
答案 1 :(得分:0)
使用Crockford的简单JSON java库。在解析字符串时,它将创建一个JSONObject的JSONArray,JSONObject有一个“类似”的方法(https://github.com/douglascrockford/JSON-java/blob/master/JSONObject.java#L1295),它将独立于JSON字符串中的顺序比较对象。