assert utils

本文介绍了一个Java工具类,用于进行对象和列表的比较、字符串处理、HTTP GET请求及响应处理等功能。提供了多种方法来简化测试过程中的断言操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

public class AssertUtil {

/**
* 比较2个list是否相等:先对list排序,然后调用apache的反射机制对对象的每个字段进行比较
* @param list1
* @param list2
* @return
*/
public static boolean isListEquals(List<? extends Object> list1,
List<? extends Object> list2) {
if (list1.size() != list2.size()) {
return false;
}

sortList(list1);
sortList(list2);

for (int i = 0; i < list1.size(); i++) {
boolean isEqual = EqualsBuilder.reflectionEquals(list1.get(i),
list2.get(i));
if (!isEqual) {
return false;
}
}
return true;
}

/**
* 校验2个对象是否相等
* @param lhs
* @param rhs
* @return
*/
public static boolean isObjectEquals(Object lhs, Object rhs){
return EqualsBuilder.reflectionEquals(lhs, rhs);
}

/**
* 比较2个以逗号分割的字符串是否相等
* @param a
* @param b
* @return
*/
public static boolean compareStr2(String a, String b) {
if(a.length() != b.length()) {
return false;
}
String[] aa = a.split(",");
String[] bb = b.split(",");

if (aa.length != bb.length){
return false;
}

Arrays.sort(aa);
Arrays.sort(bb);

System.out.println(Arrays.toString(aa));
System.out.println(Arrays.toString(bb));

for (int i = 0; i < bb.length; i++) {
if (!aa[i].equals(bb[i])){
return false;
}
}
return true;
}
/**
* 把一个map的值copy到另一个map
* @param attributes
* @param paramsMap
* @return
*/
public static Map<String, String> copyMapData(Map<String,String> attributes, Map<String, String> paramsMap){
if (attributes != null){
for(String key : attributes.keySet()){
paramsMap.put(key, attributes.get(key));
}
}
return paramsMap;
}
/**
* 在控制台打印输出对象
* @param obj
*/
public static String toString(Object obj){
return ReflectionToStringBuilder.toString(obj,
ToStringStyle.SHORT_PREFIX_STYLE);
}

/**
* list列表排序
*
* @param list
*/
private static void sortList(List list) {
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
return (ReflectionToStringBuilder.toString(o1,
ToStringStyle.SHORT_PREFIX_STYLE))
.compareTo(ReflectionToStringBuilder.toString(o2,
ToStringStyle.SHORT_PREFIX_STYLE));
}
});
}

/**
* http get 请求返回response
* @param url
* @return
*/
public static String httpGetReq(String url){
String responseBody = null;

HttpClient httpClient = new HttpClient();
HttpClientParams params=httpClient.getParams();
params.setHttpElementCharset("UTF-8");
params.setContentCharset("UTF-8");

GetMethod getMethod = new GetMethod(url);
try {
httpClient.executeMethod(getMethod);
responseBody = getMethod.getResponseBodyAsString();
getMethod.releaseConnection();
System.out.println(responseBody);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return responseBody;
}

public static String getStringNoBlank(String str) {
if(str!=null && !"".equals(str)) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
String strNoBlank = m.replaceAll("");
return strNoBlank;
}else {
return str;
}
}

/**
* 校验两个list中对象是否等,校验顺序
* 比较的对象需要实现hashCode方法,覆盖equals方法
* @param tList
* @param oList
*/
public static void assertListEquals2(List<? extends Object> tList, List<? extends Object> oList) {
if ((tList == null) || (oList == null)) {
fail("param not null...");
}

Iterator<? extends Object> tIterator = tList.iterator();
Iterator<? extends Object> oIterator = oList.iterator();

while((tIterator.hasNext() && oIterator.hasNext())) {
Object t = tIterator.next();
Object o = oIterator.next();

if(!t.equals(o)) {
fail(t + " not equals " + o);
}
}
}

/**
* 校验两个list中对象是否等,不校验顺序
* 比较的对象需要实现hashCode、compareTo方法,覆盖equals方法
* @param tList
* @param oList
*/
public static void assertListEquals(List<? extends Object> tList, List<? extends Object> oList) {
if ((tList == null) || (oList == null)) {
fail("param not null...");
}

assertEquals(tList.size(), oList.size());

TreeSet<Object> tSet = new TreeSet<Object>();
tSet.addAll(tList);

TreeSet<Object> oSet = new TreeSet<Object>();
oSet.addAll(oList);

Iterator<Object> tIterator = tSet.iterator();
Iterator<Object> oIterator = oSet.iterator();

while((tIterator.hasNext() && oIterator.hasNext())) {
Object t = tIterator.next();
Object o = oIterator.next();

if(!t.equals(o)) {
fail(t + " not equals " + o);
}
}
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值