junit适配器模式应用

适配器模式

定义

  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作;

构成

  目标抽象角色(Target):定义客户要用的特定领域的接口
  适配器(Adapter):调用另一个接口,作为一个转换器
  适配器(Adaptee):定义一个接口,Adapter需要接入

  比如我们家的台灯的插头是2相的,但是我们墙壁上的电源插座是3相的,那我们如何用呢???可以去买一个插排,插排接电源的是3孔的,插排上有很多插孔是2孔的,那么插排起到的作用就是桥梁,起转换的作用,在这里就是适配器模式中的适配器

分类

  常用的适配器模式有两种:类适配器(采用继承的方式)和对象适配器(采用对象组合的方式)

java代码实现

类适配器:

//台灯插头
public interface Target {
    public void method1();
}
//墙壁上的电源
public class Adaptee {
    public void method2(){
        System.out.println("Adaptee.method2()");
    }
}
//插排
public class Adapter extends Adaptee implements Target {
    @Override
    public void method1() {
        this.method2();
    }
}
public class Client {
    public static void main(String[] args) {
        Target target = new Adapter();
        target.method1();
    }
}

对象适配器:

//台灯插头
public interface Target {
    public void method1();
}
//墙壁上的电源
public class Adaptee {
    public void method2(){
        System.out.println("Adaptee.method2()");
    }
}
//插排
public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void method1() {
        adaptee.method2();
    }
}
public class Client {
    public static void main(String[] args) {
        Target target = new Adapter(new Adaptee());
        target.method1();
    }
}

适配器模式在junit3框架中的应用

TestCase.java中的runTest()方法

public void runBare() throws Throwable {
    setUp();
    try {
        runTest();
    }
    finally {
        tearDown();
    }
}

protected void runTest() throws Throwable {
    assertNotNull(fName);
    Method runMethod= null;
    try {
        runMethod= getClass().getMethod(fName, null);
    } catch (NoSuchMethodException e) {
        fail("Method \""+fName+"\" not found");
    }
    if (!Modifier.isPublic(runMethod.getModifiers())) {
        fail("Method \""+fName+"\" should be public");
    }

    runMethod.invoke(this, new Class[0]);
}

在runBare()方法中,通过runTest()方法将我们自己编写的testXXX()方法进行了适配,使得junit框架可以执行我们自己编写的TestCase;

runTest()方法中,首先获得我们自己编写的testXXX方法所对应的Method对象(无参),然后检查该Method对象所编写的方法是否是pulbic的,如果是则调用Method对象的invoke方法来执行我们自己编写的testXXX方法

在这里目标接口Target和适配器Adapter变成了同一个类TestCase,而测试用例,作为Adaptee

junit3中引入适配器模式的好处

1)使用Adapter模式简化测试用例的开发,通过按照方法命名的规范来开发测试用例,不需要进行大量的类继承,提高代码的复用,减轻测试人员的工作量;

2)使用Adapter可以重新定义Adaptee的部分行为,如增强异常处理等

时间: 2024-08-05 03:15:26

junit适配器模式应用的相关文章

把xml文件转成properties类型----适配器模式的应用

本项目的目的是使用适配器模式将DocumentHandler的接口适配成Java.util.Properties的接口.采用的是对象的适配器模式.XMLproperties是一个继承自Java.util.Properties的对象,并委派一个DocumentHandler类型的对象. 本项目需要两个类:XMLProperties类和XMLParser类,前者是Java.util.Properties类型,后者是DocumentHandler类型. 源代码如下,适配器类XMLProperties:

【设计模式】之适配器模式

适配器模式 什么是适配器模式 适配器模式属于结构型模式,可以使得两个不匹配的接口可以协同工作. 适配器模式允许两个不匹配的类通过将其中一个接口类型转换成另一个客户端期望的接口类型,从而达到二者协同工作. 适配器模式也叫包装器. 适配器模式在 Gang of Four 书中原始的定义如下: 将一个类的接口类型转换成另一个客户端期望的接口类型. 适配器可以让多个类协同工作即使他们本来是不匹配的接口类型. 适配器模式的应用场景 考虑一个这样的场景,你在印度购买了一个轻便的笔记本,最近你刚搬到英国.但是

Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的需求. 适配器模式的使用场景 1.当你使用一个已经存在的类,而他的接口不符合你的需求. 2.你想要创建一个复用的类,该类可以与其相关的类或者不可见的类协同工作. 适配器角色 Target:目标接口 TargetImpl:目标实现类 Adapter:适配器 Adaptee:被适配者 代码解析: package com.d

单元测试Junit

###<center> 单元测试Junit </center>###- - -1.**单元测试**:> ==单元测试==是软件之中对于最小的功能模块的的测试,其可以对最基本的软件构成单元来测试.> 需要注意的是:> >**测试用例是用来达到测试想要的预期结果,而不能测试出程序的逻辑错误**. 2.**JUnit**:>1.**Junit是基于断言机制的**.是用于编写可复用测试集的简单框架,是xUnit的一个子集.xUnit是一套基于测试驱动开发的测试

JUnit入门

一.简介 JUnit是一个开源的Java单元测试框架.在1997年,由 Erich Gamma 和 Kent Beck 开发完成.这两个牛人中 Erich Gamma 是 GOF 之一:Kent Beck 则在 XP 中有重要的贡献(你觉得眼熟一点都不奇怪). 正如常言道:“麻雀虽小,五脏俱全.” JUnit设计的非常小巧,但是功能却非常强大. 下面是JUnit一些特性的总结: 1)         提供的API可以让你写出测试结果明确的可重用单元测试用例 2)       提供了三种方式来显示

Lab 1: Write a java program for the triangle problem and test the program with Junit.

Tasks: 1. Install Junit(4.12), Hamcrest(1.3) with Eclipse 将两个jar包添加到工程中 2. Install Eclemma with Eclipse 3. Write a java program for the triangle problem and test the program with Junit. [Description of triangle problem]Function triangle takes three i

Javascript设计模式理论与实战:适配器模式

有的时候在开发过程中,我们会发现,客户端需要的接口和提供的接口发生不兼容的问题.由于特殊的原因我们无法修改客户端接口.在这种情况下,我们需要适配现有接口和不兼容的类,这就要提到适配器模式.通过适配器,我们可以在不用修改旧代码的情况下也能使用它们,这就是适配器的能力. 基本理论 适配器模式:将一个接口转换成客户端需要的接口而不需要去修改客户端代码,使得不兼容的代码可以一起工作. 适配器主要有3个角色组成:(1)客户端:调用接口的类(2)适配器:用来连接客户端接口和提供服务的接口的类(3)适配者:提

适配器模式开发

Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式. 在大规模的系统开发过程中,我们常常碰到诸如以下这些情况:我们需要实现某些功能,这些功能已有还不太成熟的一个或多个外部组件, 如果我们自己重新开发这些功能会花费大量时间:所以很多情况下会选择先暂时使用外部组件, 以后再考虑随时替换.避免代码大面积修改Adapter模式就是针对这种类似需求而提出来的.Adapter模式通过定义一个新的接口(对要实现功能加以抽象),和一个实现该接口的Ada

Junit Test With Selenium Driver

Junits 和 Selenium Junits 处理的是unit level 的测试:Selenium 处理的是 functional leve 的测试.虽然它们是完全不同,但仍然可以用Junit 来写 Selenium 测试. 一个完整的例子 import java.util.concurrent.TimeUnit;   import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; im