自动化测试中,一些功能是公共功能,很多模块都会用到,只是在不同的模块中方法会一些差异而已。
比如我们需要对请假流程、报销流程进行自动化。经过分析,我们发现:
请假:用户需要先登录、然后请假(提交)、相关人员登录系统开始审批;
报销:用户需要先登录,然后创建报销申请单(提交)、相关人员登录系统开始审批;
经过分析,登录是公共功能,请假单、报销单部分则需要单独处理,相关人员审批这块有共性的地方,也有各自的特性(报销系统需要上传附件这种)。设计的时候,审批功能就可以采用模板模式进行设计和代码编写。
话不多说,先上代码,来点直观的感受吧。
1、模板模式的实现
1.1 实现公共方法
package java模板模式2;
//定义审批接口
public abstract class approvalDemo {
void approval(){
System.out.println("这是一个流程:");
}
}
1.2 实现具体对象
package java模板模式2;
//请假审批流程
public class leaveApproval extends approvalDemo {
public void approval1() {
System.out.println("这是员工请假审批流程");
System.out.println("事假只需要直属领导审批...");
}
public void approval2(){
System.out.println("这是员工请假审批流程");
System.out.println("请婚假需要人事审批...");
}
}
package java模板模式2;
//报销审批流程
public class reimbursementApproval extends approvalDemo {
public void approval3() {
System.out.println("这是报销审批流程...");
}
public void approval4(){
System.out.println("这是一个需要上传附件的报销审批流程...");
}
}
1.3 实现测试方法
package java模板模式2;
public class testMain {
public static void main(String [] args){
System.out.println("--------------------------------------------------------");
System.out.println("开始测试请假审批流程...");
leaveApproval la = new leaveApproval();
la.approval();
la.approval1();
la.approval2();
System.out.println("请假审批流程测试完成...");
System.out.println("------------------");
System.out.println("开始测试报销审批流程...");
reimbursementApproval ra = new reimbursementApproval();
ra.approval();
ra.approval3();
ra.approval4();
System.out.println("报销审批流程测试完成...");
System.out.println("--------------------------------------------------------");
}
}
查看程序执行结果:
--------------------------------------------------------
开始测试请假审批流程...
这是一个流程:
这是员工请假审批流程
事假只需要直属领导审批...
这是员工请假审批流程
请婚假需要人事审批...
请假审批流程测试完成...
------------------
开始测试报销审批流程...
这是一个流程:
这是报销审批流程...
这是一个需要上传附件的报销审批流程...
报销审批流程测试完成...
--------------------------------------------------------
2、总结
显然使用了模板模式后,代码清晰了很多,公共的功能做了统一处理,具体子类用的时候直接引用就好了。另外为防止恶意操作,一般模板方法都加上 final 关键词。