项目封装了新的SDK,需要对SDK进行测试,API没有变更。
设计一自动化CASE:
- 通过openapi的方式调用YAPI上接口测试用例,返回结果A;
- 引入SDK,编写单元测试代码,通过SDK调用接口,返回结果B;
- 对结果(xml/Json)进行排序后断言。
因为整个环境只有SDK是新的,所以完成以上CASE,基本可以找出SDK中存在的Bug。
但是返回结果中xml和Json的属性顺序不一定相对,所以用基本的equals可能会存在判断不准确的情况,需要提前对结果进行自然排序,排序后进行比较即可。
一、Json排序
fastjson,使用SerializerFeature.MapSortField参数,可以达到目的。
@Slf4j
public class FastJsonSortTest
{
@Test
public void testSortJson()
{
String json = "";
JSONObject jsonObject = JSON.parseObject(json);
String rs = JSON.toJSONString(jsonObject, SerializerFeature.MapSortField, SerializerFeature.PrettyFormat);
log.info("rn{}", rs);
}
}
二、xml排序
xml比较复杂,这里只讨论POJO<->xml的形式。
对于比较POJO形式的xml根据node名称进行自然排序即可,使用XSLT进行sort即可。
@Slf4