ws 測試工程

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;
	}

	@Override
	public 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() {

			@Override
			public void run() {
				// 1. invoke query
				Object queryResult = invokeMethod(configBean.getQueryClassName(),
												configBean.getQueryMethodName(),
												configBean.getQueryParameterClassList(),
												configBean.getQueryParameterList(),
												configBean.getQueryAddress());
				
				System.out.println("queryResult : "+getResult(configBean,queryResult));
				
				// 2. invoke update
				Object updateResult = invokeMethod(configBean.getUpdateClassName(),
											configBean.getUpdateMethodName(),
											configBean.getUpdateParameterClassList(),
											configBean.getUpdateParameterList(),
											configBean.getUpdateAddress());
				
				System.out.println("updateResult : "+updateResult);
				
				// 3. wait
				try {
					new Thread().sleep(Integer.parseInt(configBean.getWaitTime()));
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				
				// 4. invoke query
				Object 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 block
			e.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.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 block
			e1.printStackTrace();
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值