1、Fitnesse代码:
!*> 使用 slim 引擎
!define TEST_SYSTEM {slim}
*!
!*> 指定 classpath 路径
!path C:\03=Workspaces\eclipse1\Demo_Fitnesse\fitnessejar\fitnesse-standalone.jar
!path C:\03=Workspaces\eclipse1\Demo_Fitnesse\bin
!path C:\03=Workspaces\eclipse1\Demo_Fitnesse\libs\*.jar
*!
!*> 引入 java包 路径
!|import |
|org.xxxx.fitnesse |
*!
|ddt:org.xxxx.fitnesse.UserControl |
|user id |user pass|user login? |
|system |system |OK |
|ddt:org.xxxx.fitnesse.UserControl |
|user id |user delete one? |
|1001 |OK |
|1002 |ERROR:NO-USER |
|1007 |ERROR:NO-USER |
|ddt:org.xxxx.fitnesse.UserControl |
|user id |user name|user nick name|user pass|user email |user is work|user reg time |user role|user notes|user pass wrong|user pass history|user add? |
|1001 |xiaoluo |xdd |1001 |xdd@test.com |1 |!today (yyyy-MM-dd hh:mm:ss) |OP |测试01 | | |OK |
|1002 |zhangsan |zgg |1002 |zgg@test.com |0 |!today (yyyy-MM-dd hh:mm:ss) |OP |测试02 | | |OK |
|1007 |cloudy |cjj |1007 |cjj@test.com |0 |!today (yyyy-MM-dd hh:mm:ss) |ADMIN |测试03 | | |OK |
|ddt:org.xxxx.fitnesse.UserControl |
|user id |user delete two? |
|1002 |OK |
|1007 |OK |
2、Fitnesse对应的java代码:
package org.xxxx.fitnesse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xxxx.fitnesse.dto.Userinfo;
import org.xxxx.fitnesse.utils.HttpUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class UserControl {
private static final Logger log = LoggerFactory.getLogger(UserControl.class);
private String userId;// 登陆帐号
private String userName;// 用户姓名
private String userNickName; // 用户昵称
private String userPass;// 登陆密码
private String userEmail;// 邮箱(用户自身重置密码时可输入邮箱来重置,系统自动发邮件)
private String userIsWork; // 是否生效:1=是,0=否
private String userRegTime;// 创建时间
private String userRole;// 角色:系统管理员SA(重置密码)、普通业务员(任务操作人)OP、业务经理(审核是否可以运行任务)ADMIN
private String userNotes;// 备注
private String userPassWrong; //密码错误日期和次数,类似:20190101:2
private String userPassHistory; //密码历史
private final String ENCODING = "UTF-8";
private final String HTTPSLINK = "https://***:8443";
private final String ACTION1 = "/loginSubmit";
private final String ACTION2 = "/userAdd";
private final String ACTION3 = "/userDelete";
/**
* 执行函数
* @param header 假如页面有多个“?”的返回,那么这里就判断“header=某个?”,然后再返回这个"?"对应的结果
* @return
*/
public String get(String header) {
String rs = "OK";
if(header.equals("user login")){
Userinfo paras0 = setUserinfo();
JSONObject jsonObject = sendPost( HTTPSLINK+ACTION1,paras0);
if ((int) jsonObject.get("code") == -1) {
rs = (String) jsonObject.get("msg");
if( rs.toLowerCase().contains("username or password is wrong") ){
rs="ERROR:WRONG";
}
if( rs.toLowerCase().contains("user account was locked") ){
rs="ERROR:LOCKED";
}
}
return rs;
}
if( header.equals("user add") ){
Userinfo paras0 = setUserinfo();
JSONObject jsonObject = sendPost( HTTPSLINK+ACTION2,paras0);
if ((int) jsonObject.get("code") == -1) {
rs = (String) jsonObject.get("msg");
if( rs.toLowerCase().contains("user exits") ){
rs="ERROR:EXITS";
}
}
return rs;
}
if( header.equals("user delete one") || header.equals("user delete two") ){
Userinfo paras0 = setUserinfo();
JSONObject jsonObject = sendPost( HTTPSLINK+ACTION3,paras0);
if ((int) jsonObject.get("code") == -1) {
rs = (String) jsonObject.get("msg");
if( rs.toLowerCase().contains("user's id is null") ){
rs="ERROR:NULL-ID";
}
if( rs.toLowerCase().contains("user not exits") ){
rs="ERROR:NO-USER";
}
}
return rs;
}
HttpUtils.close();
return rs;
}
private Userinfo setUserinfo( ){
Userinfo paras0 = new Userinfo();
paras0.setuId(userId);
paras0.setuName(userName);
paras0.setuNickName(userNickName);
paras0.setuPass(userPass);
paras0.setuEmail(userEmail);
paras0.setIsWork(userIsWork);
paras0.setRegTime(userRegTime);
paras0.setuRole(userRole);
paras0.setNotes(userNotes);
paras0.setuPassWrong(userPassWrong);
paras0.setuPassHistory(userPassHistory);
return paras0;
}
private JSONObject sendPost(String URL, Userinfo paras0){
String paras = JSON.toJSONString(paras0);
log.info("Sent Contents:{}" ,paras);
String result = HttpUtils.sendPostSSL(URL, paras, ENCODING);
JSONObject jsonObject = JSON.parseObject(result);
log.info("Received Contents:{}" ,result);
return jsonObject;
}
/**
* 相当于 setter 函数,只是把多个参数放到一个方法里面去set
* @param header html 页面的表头参数
* @param value 该参数传过来的值
*/
public void set(String header, Object value) {
if( header.equals("user id") ){
this.userId = (String)value;
}
if( header.equals("user name") ){
this.userName = (String)value;
}
if( header.equals("user nick name") ){
this.userNickName = (String)value;
}
if( header.equals("user pass") ){
this.userPass = (String)value;
}
if( header.equals("user email") ){
this.userEmail = (String)value;
}
if( header.equals("user is work") ){
this.userIsWork = (String)value;
}
if( header.equals("user reg time") ){
this.userRegTime = (String)value;
}
if( header.equals("user role") ){
this.userRole = (String)value;
}
if( header.equals("user notes") ){
this.userNotes = (String)value;
}
if( header.equals("user pass wrong") ){
this.userPassWrong = (String)value;
}
if( header.equals("user pass history") ){
this.userPassHistory = (String)value;
}
}
}
3、HttpUtils.java 工具类
package org.xxxx.fitnesse.utils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @Description:发送http请求帮助类
* @author:liuyc
* @time:2016年5月17日 下午3:25:32
*/
public class HttpUtils {
private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
private static CloseableHttpClient httpClient = null; // HttpClient-v4.3 开始用
public static String sendPostSSL(String url, String jsonstr, String charset) {
HttpPost httpPost = null;
String result = null;
try {
if(null==httpClient){
httpClient = new SSLClient();
}
httpPost = new HttpPost(url);
StringEntity se = new StringEntity(jsonstr, charset);
se.setContentType("application/json");
se.setContentEncoding(charset);
httpPost.setEntity(se);
CloseableHttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, charset);
}
}
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
}
return result;
}
public static void close(){
try {
if(null!=httpClient){
httpClient.close();
log.warn("httpClient 已关闭");
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
4、其他需要的:需要有对应的接口工程,并且已经启动,并且有对应的返回逻辑。