当前位置: 代码迷 >> 综合 >> 成为高薪测试你必须知道的设计模式III
  详细解决方案

成为高薪测试你必须知道的设计模式III

热度:91   发布时间:2024-03-05 20:05:50.0

自动化测试中,我们会遇到需要写大量的判断逻辑的场景,实现角度要么用if、else实现,要么用swtich语句实现。

从功能角度来看,的确是实现了,但后面项目需要维护了,需要新增一个功能时,发现需要对判断逻辑进行改写,很容易改出问题来。为解决这种情况,我们需要引入策略模式。

下面以UI自动化中,支持浏览器适配功能为例,介绍策略模式的用法,话不多说,直接上代码。

1、策略模式代码实现

先看一个没有使用策略模式的代码写法:
 

package java策略模式5;public class openBrower {public void openbrower(String browerType){if("ie".equalsIgnoreCase(browerType)){System.out.println("打开ie浏览器...");}else if("Chrome".equalsIgnoreCase(browerType)){System.out.println("打开Chrome浏览器...");}else {System.out.println("打开Firefox浏览器...");}}public static void main(String [] args){System.out.println("-------------------------------------");System.out.println("正在开始UI自动化测试...");openBrower ob = new openBrower();ob.openbrower("ie");System.out.println("UI自动化测试完成...");System.out.println("-------------------------------------");}}

接下来使用策略模式来对上述功能进行改写。

 

1.1  创建接口

publicinterface openbrowser {Object opOpenBrowser(String browserType);}

1.2  创建接口的实现类

public class chrome implements openbrowser {public Object opOpenBrowser(String browserType) {System.out.println("打开" + browserType + "浏览器...");return null;}}public class firefoxbrowser implements openbrowser{public Object opOpenBrowser(String browserType) {// TODO Auto-generated method stubSystem.out.println("打开" + browserType + "浏览器...");return null;}}public class iebrowser implements openbrowser {public Object opOpenBrowser(String browserType) {{System.out.println("打开"+browserType+"浏览器...");}return null;}}

1.3  创建环境类

public class browser{private openbrowser op;public browser(openbrowser op){this.op=op;}public Object opOpenBroswer(String browserType){return op.opOpenBrowser(browserType);}}

1.4  创建测试类

public class testMain {public  static void main(String [] args){System.out.println("--------------------------------------------");System.out.println("当前正在测试策略模式");browser b = new browser(new chrome());b.opOpenBroswer("ie");b.opOpenBroswer("chrome");b.opOpenBroswer("firefox");System.out.println("策略模式测试完成...");System.out.println("---------------------------------------------");}}

执行主函数,代码打印输出如下:

 

--------------------------------------------

当前正在测试策略模式

打开ie浏览器...

打开chrome浏览器...

打开firefox浏览器...

策略模式测试完成...

---------------------------------------------

 

2、总结

以上就是策略模式的代码实现,使用策略模式后,自动化框架如果要新支持一个浏览器360。我们只需要在接口的实现类中新增一个360浏览器的实现类即可,其余都不需要改动,如此我们在进行自动化的时候,新增或者调整了一个模块影响到其他的功能模块的情况,我们自动化框架的可扩展性大大得到了改善。

 

当然透过这个例子,我们发现复杂的功能模块,采用设计模式代码等才会带来简便,不然反而会让代码编写变得复杂。

  相关解决方案