ws 測試工程

来源:互联网 发布:淘宝水果店铺介绍范文 编辑:程序博客网 时间:2024/05/23 10:13

ws 測試工程

 

public class ConfigBean {private String queryClassName;private String queryMethodName;private List<String> queryParameterClassList;private List<Object> queryParameterList;private String queryAddress;private String updateClassName;private String updateMethodName;private List<String> updateParameterClassList;private List<Object> updateParameterList;private String updateAddress;private String resultClassName;private String resultField;private String expectValue;private String waitTime;public ConfigBean() {super();}public ConfigBean(String queryClassName, String queryMethodName,List<String> queryParameterClassList,List<Object> queryParameterList, String queryAddress,String updateClassName, String updateMethodName,List<String> updateParameterClassList,List<Object> updateParameterList, String updateAddress,String resultClassName, String resultField, String expectValue,String waitTime) {super();this.queryClassName = queryClassName;this.queryMethodName = queryMethodName;this.queryParameterClassList = queryParameterClassList;this.queryParameterList = queryParameterList;this.queryAddress = queryAddress;this.updateClassName = updateClassName;this.updateMethodName = updateMethodName;this.updateParameterClassList = updateParameterClassList;this.updateParameterList = updateParameterList;this.updateAddress = updateAddress;this.resultClassName = resultClassName;this.resultField = resultField;this.expectValue = expectValue;this.waitTime = waitTime;}public String getQueryClassName() {return queryClassName;}public void setQueryClassName(String queryClassName) {this.queryClassName = queryClassName;}public String getQueryMethodName() {return queryMethodName;}public void setQueryMethodName(String queryMethodName) {this.queryMethodName = queryMethodName;}public List<String> getQueryParameterClassList() {return queryParameterClassList;}public void setQueryParameterClassList(List<String> queryParameterClassList) {this.queryParameterClassList = queryParameterClassList;}public List<Object> getQueryParameterList() {return queryParameterList;}public void setQueryParameterList(List<Object> queryParameterList) {this.queryParameterList = queryParameterList;}public String getQueryAddress() {return queryAddress;}public void setQueryAddress(String queryAddress) {this.queryAddress = queryAddress;}public String getUpdateClassName() {return updateClassName;}public void setUpdateClassName(String updateClassName) {this.updateClassName = updateClassName;}public String getUpdateMethodName() {return updateMethodName;}public void setUpdateMethodName(String updateMethodName) {this.updateMethodName = updateMethodName;}public List<String> getUpdateParameterClassList() {return updateParameterClassList;}public void setUpdateParameterClassList(List<String> updateParameterClassList) {this.updateParameterClassList = updateParameterClassList;}public List<Object> getUpdateParameterList() {return updateParameterList;}public void setUpdateParameterList(List<Object> updateParameterList) {this.updateParameterList = updateParameterList;}public String getUpdateAddress() {return updateAddress;}public void setUpdateAddress(String updateAddress) {this.updateAddress = updateAddress;}public String getResultClassName() {return resultClassName;}public void setResultClassName(String resultClassName) {this.resultClassName = resultClassName;}public String getResultField() {return resultField;}public void setResultField(String resultField) {this.resultField = resultField;}public String getExpectValue() {return expectValue;}public void setExpectValue(String expectValue) {this.expectValue = expectValue;}public String getWaitTime() {return waitTime;}public void setWaitTime(String waitTime) {this.waitTime = waitTime;}@Overridepublic String toString() {return "ConfigBean [queryClassName=" + queryClassName+ ", queryMethodName=" + queryMethodName+ ", queryParameterClassList=" + queryParameterClassList+ ", queryParameterList=" + queryParameterList+ ", queryAddress=" + queryAddress + ", updateClassName="+ updateClassName + ", updateMethodName=" + updateMethodName+ ", updateParameterClassList=" + updateParameterClassList+ ", updateParameterList=" + updateParameterList+ ", updateAddress=" + updateAddress + ", resultClassName="+ resultClassName + ", resultField=" + resultField+ ", expectValue=" + expectValue + ", waitTime=" + waitTime+ "]";}}


 

  

public class WSFactory {/** * get web service port * @param address * @param clazz * @param username * @param password * @return */public static Object getPort(String address,String clazz,String username,String password){try {/*String cerPath=WSFactory.class.getClassLoader().getResource("cacerts").getPath();logger.debug("cerPath is :"+cerPath);System.setProperty("javax.net.ssl.trustStore", cerPath);*/JaxWsProxyFactoryBean clientFactory = new JaxWsProxyFactoryBean();  clientFactory.setAddress(address);clientFactory.setServiceClass(Class.forName(clazz));clientFactory.setUsername(username);clientFactory.setPassword(password);return clientFactory.create();} catch (ClassNotFoundException e) {e.printStackTrace();}return null;}}

 

public class TestWS {private static final String file = "config.xml";private static final String username = "username";private static final String password = "password";public static void main(String[] args) throws Exception {// 1.List<ConfigBean> configBeanList = readConfigBeanList();// 2.for (ConfigBean configBean : configBeanList) {createTestThread(configBean);}}private static List<ConfigBean> readConfigBeanList() {InputStream is = TestWS.class.getClassLoader().getResourceAsStream(file);XStream xStream = new XStream(new DomDriver());xStream.alias("configs", List.class);        xStream.alias("config", ConfigBean.class);        xStream.alias("queryParameterClassList", List.class);        xStream.alias("String", String.class);        xStream.alias("int", int.class);        xStream.alias("queryParameterList", List.class);        xStream.alias("updateParameterClassList", List.class);        xStream.alias("updateParameterList", List.class);return (List<ConfigBean>) xStream.fromXML(is);}private static void createTestThread(final ConfigBean configBean) {new Thread(new Runnable() {@Overridepublic void run() {// 1. invoke queryObject queryResult = invokeMethod(configBean.getQueryClassName(),configBean.getQueryMethodName(),configBean.getQueryParameterClassList(),configBean.getQueryParameterList(),configBean.getQueryAddress());System.out.println("queryResult : "+getResult(configBean,queryResult));// 2. invoke updateObject updateResult = invokeMethod(configBean.getUpdateClassName(),configBean.getUpdateMethodName(),configBean.getUpdateParameterClassList(),configBean.getUpdateParameterList(),configBean.getUpdateAddress());System.out.println("updateResult : "+updateResult);// 3. waittry {new Thread().sleep(Integer.parseInt(configBean.getWaitTime()));} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 4. invoke queryObject queryAgainResult = invokeMethod(configBean.getQueryClassName(),configBean.getQueryMethodName(),configBean.getQueryParameterClassList(),configBean.getQueryParameterList(),configBean.getQueryAddress());System.out.println("queryAgainResult : "+getResult(configBean,queryAgainResult));System.out.println("compare : "+(getResult(configBean,queryAgainResult).equals(configBean.getExpectValue())));}}).start();}private static Object invokeMethod(String className, String methodName,List<String> parameterClassList, List<Object> parameterList,String address) {try {Class[] classArray = new Class[parameterClassList.size()];int i = 0;for (String parameterClass : parameterClassList) {if(parameterClass.equals("int")){classArray[i++] = int.class;}else{classArray[i++] = Class.forName(parameterClass);}}Object[] parameters = new Object[parameterList.size()];i = 0;for (Object parameter : parameterList) {parameters[i++] = parameter;}Class clazz = Class.forName(className);Method method = clazz.getMethod(methodName, classArray);return method.invoke(WSFactory.getPort(address, className, username, password),parameters);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}private static Object getResult(ConfigBean configBean,Object obj) {try {Class clazz=Class.forName(configBean.getResultClassName());Field field=clazz.getDeclaredField(configBean.getResultField());field.setAccessible(true);return field.get(obj);} catch (ClassNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}


 


 

<?xml version="1.0" encoding="UTF-8"?><configs>    <config>        <queryClassName>xxx</queryClassName>        <queryMethodName>xxx</queryMethodName>        <queryParameterClassList>            <String>xxx</String>            <String>xxx</String>        </queryParameterClassList>        <queryParameterList>            <String>xxx</String>            <int>xxx</int>        </queryParameterList>        <queryAddress>xxx</queryAddress>                <updateClassName>xxx</updateClassName>        <updateMethodName>xxx</updateMethodName>        <updateParameterClassList>            <String>xxx</String>            <String>xxx</String>            <String>xxx</String>        </updateParameterClassList>        <updateParameterList>            <String>xxx</String>            <String>xxx</String>            <int>xxx</int>        </updateParameterList>        <updateAddress>xxx</updateAddress><resultClassName>xxx</resultClassName><resultField>xxx</resultField><expectValue>xxx</expectValue>                <waitTime>300</waitTime>    </config></configs>