博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
junit模板方法模式应用
阅读量:6565 次
发布时间:2019-06-24

本文共 2045 字,大约阅读时间需要 6 分钟。

模板方法模式

定义

  定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成;

构成

  父类角色:提供模板;

  子类角色:为模板提供实现;

java代码实现

public abstract class Template {    //定义执行步骤,每个步骤的具体实现由子类完成    public void method() {        this.step1();        this.step2();        this.step3();    }    protected abstract void step1();    protected abstract void step2();    protected abstract void step3();}
public class ConcreteTemplate extends Template {    @Override    protected void step1() {        System.out.println("ConcreteTemplate.step1()");    }    @Override    protected void step2() {        System.out.println("ConcreteTemplate.step2()");    }    @Override    protected void step3() {        System.out.println("ConcreteTemplate.step3()");    }}
public class Client {    public static void main(String[] args) {        Template template = new ConcreteTemplate();        template.method();    }}

 

模板模式在junit3中的应用

查看TestCase.java源代码

public abstract class TestCase extends Assert implements Test {    public void runBare() throws Throwable {        setUp();        try {            runTest();        }        finally {            tearDown();        }    }    protected void setUp() throws Exception {    }    protected void tearDown() throws Exception {    }    protected void runTest() throws Throwable {        assertNotNull(fName);        Method runMethod= null;        try {            runMethod= getClass().getMethod(fName, null);   //null表示测试方法必须是无参的        } catch (NoSuchMethodException e) {            fail("Method \""+fName+"\" not found");        }        if (!Modifier.isPublic(runMethod.getModifiers())) {            fail("Method \""+fName+"\" should be public");   //明确表示测试方法必须是public修饰的        }        runMethod.invoke(this, new Class[0]);    }}

在TestCase.java中的runBare()方法中定义了测试方法的执行步骤:setUp()-->runTest()-->tearDown(); 具体方法的真正实现推迟到子类中去实现

 

junit3中引入模板方式模式的好处

1)将各个测试用例中的公共的行为(初始化信息和释放资源等)被提取出来,可以避免代码的重复,简化了测试人员的工作;

2)在TestCase中实现一个算法的不变部分,并且将可变的行为留给子类来实现。增强了系统的灵活性。使JUnit框架仅负责算法的轮廓和骨架而开发人员则负责给出这个算法的各个逻辑步骤

 

转载地址:http://fndjo.baihongyu.com/

你可能感兴趣的文章
RequireJS进阶(二)
查看>>
我设计的网站的分布式架构
查看>>
linux extract rar files
查看>>
Knockout.Js官网学习(监控属性Observables)
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决
查看>>
azure之MSSQL服务性能测试
查看>>
Android BitmapFactory.Options
查看>>
前端构建:Less入了个门
查看>>
phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合
查看>>
linux 批量进行:解压缩某一类压缩文件类型的文件
查看>>
激活modelsim se 10.4 时运行patch_dll.bat不能生成TXT
查看>>
17秋 软件工程 Alpha 事后诸葛亮会议
查看>>
线性空间
查看>>
疑似checkpoint堵塞数据库连接
查看>>
Node.js中针对中文的查找和替换无效的解决方法
查看>>
理解指针的关键
查看>>
如何查看Ubuntu下已安装包版本号
查看>>
我的那些年(2)~我毕业了
查看>>
VS2017 配置ImageMagick
查看>>
Hive任务优化--控制hive任务中的map数和reduce数
查看>>