修改间
化测试越越趋向平台化,平台化致力协工,提高效率,让更参与化程,,平台化,更关键点,关键字驱,化测试代码转换更容易懂语言,才让更懂代码加入进,才达平台化目。今谈谈化测试关键字驱原理及实方式。
先例,老师句:桌A点搬B点。老师命令,,因明确象,知命令谁,老师再句:张三,桌A点搬B点。候,明确象--张三,命令主体--搬桌AB。句” 张三,桌A点搬B点”两关键字:张三、桌A点搬B点。两关键字缺少任何,件完。,场景理解关键字驱,假句话转换代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class MoveDesk {
private Person zhangsan;
public void setZhangsan(Person zhangsan) {
this.zhangsan = zhangsan;
}
public void moveDeskFromA2B(){
zhangsan.getTheCommandFromTeacher();
zhangsan.findTheDeskAtA();
zhangsan.moveDeskToB();
zhangsan.notifyTeacherHadFinished();
}
public static void main(String[] args) {
MoveDesk md = new MoveDesk();
md.setZhangsan("张三");
md.moveDeskFromA2B();
}
}
代码伪代码,,其达目,流程,两关键字main方法体:张三应md.setZhangsan("张三"),”桌A点搬B点”应md.moveDeskFromA2B()。由此理解:每关键字应具体方法。,结关键字驱实特点:
1. 每关键字应方法(称关键方法)必须够随被调,像老师张三命令张三必须执。Java达关键方法随被调,其类象必须先被new,象池,象池像班级,很供老师命令并执。
2. 关键字必须与关键方法进关联,像老师让张三搬桌,张三跑买包烟,,,必须关键字与关键方法映射表。
【话,目朗读听书app,野果阅读, 安装新版。】
3. 关键字解析方式,比条命令,够张三、桌A点搬B点两关键字,关键字,关键方法少执,伪代码,果掉md.setZhangsan("张三")句,显报空指针异常。
4. 三条具备,执,老师命令,张三够执,,张三刺头另。JAVA代码够交给JVM执,转换关键字,JVM认识关键字,,必须健壮执引擎,让“张三,桌A点搬B点”句话够被执功。
综述,四条通代码实,简单关键字框架雏形,接条条实。
1.象池:
1
2
3
4
5
6
7
8
public class RegisterCenter {
public static Map<String, Object> OBJ_POOLS = new HashMap<String, Object>();
static{
OBJ_POOLS.put(MoveDesk.class.getName(), new MoveDesk());
}
}
将含关键方法类初始化遍,放OBJ_POOLS象,方直接调关键方法。(请试注解实,更炫)
2.映射表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class KeywordReflect {
public static Map<String, Map<String, String>> KEYWORD_POOLS = new HashMap<String, Map<String, String>>();
static{
KEYWORD_POOLS.put("张三", KeywordReflect.methodInfo(MoveDesk.class.getName(), "setZhangsan"));
KEYWORD_POOLS.put("桌A点搬B点", KeywordReflect.methodInfo(MoveDesk.class.getName(), "moveDeskFromA2B"));
}
public static Map<String, String> methodInfo(String className, String methodName){
Map<String, String> methodInfo = new HashMap<String, String>();
methodInfo.put("class", className);
methodInfo.put("method", methodName);
return methodInfo;
}
}
明:KEYWORD_POOLS象数据结构MAP套MAP,因明确类象,因类相名称方法,,避免混乱,必须标注方法类与方法名,才建立应映射表。(注解实)
3.解析关键字
够解析关键字,” 张三,桌A点搬B点”句话关键字给标注,改造”${张三},${桌A点搬B点}”,关键字给明确标注,虽直观感受差点点,却关键字驱很重部分。接问题转变段字符串${}解析:
正则类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class RegExp {
public boolean match(String reg, String str) {
return Pattern.matches(reg, str);
}
public List<String> find(String reg, String str) {
Matcher matcher = Pattern.pile(reg).matcher(str);
List<String> list = new ArrayList<String>();
while (matcher.find()) {
list.add(matcher.group());
}
return list;
}
}
获取关键字类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ParseKeyword {
public List<String> getKeywords(String p){
String reg = "(?<=(?<!\\\\)\\$\\{)(.*?)(?=(?<!\\\\)\\})";
RegExp re = new RegExp();
List<String> list = re.find(reg, p);
return list;
}
public static void main(String[] args) {
ParseKeyword p = new ParseKeyword();
System.out.println(p.getKeywords("a${a}a"));
System.out.println(p.getKeywords("a\\${a}a"));
System.out.println(p.getKeywords("a${a\\}a"));
System.out.println(p.getKeywords("a${a\\}a}a"));
System.out.println(p.getKeywords("a${a}a${"));
System.out.println(p.getKeywords("a${ab}a${a}"));
}
}
明:正则预查模式,正则预查模式正则相高阶法,掌握,正则台阶。
4. 执引擎:
执引擎先找需执语句,,首先应该老师命令给读取,命令存放任何格式文件,被读即,保存mand.txt:
读取命令:(未完待续)