亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUNIT源碼探秘系列(下)
作者:網絡轉載 發布時間:[ 2013/4/16 14:34:04 ] 推薦標簽:

JUNIT源碼探秘(七):Junit代碼分析之裝飾模式

在Junit實現中,對于大部分測試代碼的執行都是按照前文分析的執行過程,但同時在Junit中也提供對一個測試方法重復執行多次能力。而重復執行的過程中實際上他是把執行過程給分解成若干個相同的測試過程,也是說他的執行本質還是和單個測試方法的執行是一樣的。直接使用Juint源碼來說吧,Junit真正調用執行Junit測試代碼是在TestCase這個類中;對于要重復多次執行一個測試方法時,則過繼承Test的另一個接口類TestDecorator的實現類之一RepeatedTest來執行。而這完全是有個裝飾模式。由其可以看出代理模式有以下幾個角色

抽象構建角色(Component):給出一個抽象的接口,以規范準備接受附加責任的對象。相當于Junit源碼中的Test。

具體的構建角色(ConcreteComponent):定義一個將要接受附加責任的類。相當于Junit源碼中的TestCase。

裝飾角色(Docorator):持有一個抽象構建(Component)角色的引用,并定義一個與抽象構件一致的接口。相當于Junit源碼中的TestDecorator。

具體的裝飾角色(ConcreteDecorator):負責給構建對象“貼上”附加的責任。相當于Junit源碼中RepeatedTest類;

當然,如果Junit有其他功能需要擴展時,可以繼續對裝飾角色繼續持續實現。由此可以看出裝飾模式是動態地給一個對象添加一些額外的職責,也是在不必改變原類文件和使用繼承的情況下,動態的擴展一個對象的功能。它是通過創建一個包裝對象,也是裝飾來包裹真實的對象。增加功能來說,Decorator模式相比生成子類更為靈活。

利用Junit源碼中的類的關系圖大家可以繼續看下裝飾模式的關系

 

為了更明白的說明裝飾模式,可以繼續看下裝飾模式各個角色的實現代碼(為了易于理解裝飾模式,在這塊實現代碼用一個簡單的例子說明):

抽象構建角色(Component):

package com.wonew.mode;

public interface Component {

publicvoiddoSomething();

}

具體的構建角色(ConcreteComponent):

package com.wonew.mode;

public class ConcreteComponent  implementsComponent{

publicvoiddoSomething(){

System.out.println("功能A……");

}

}

裝飾角色(Docorator):

package com.wonew.mode;

public class Decorate implements Component{

privateComponent component;

publicDecorate(Component component) {

this.component = component;

}

publicvoiddoSomething() {

component.doSomething();

}

}

具體的裝飾角色(ConcreteDecorator):

實現一:

package com.wonew.mode;

public class ConcreteDecorate1  extends Decorate

{

publicConcreteDecorate1(Component component)

{

super(component);

}

publicvoiddoSomething()

{

super.doSomething();

this.doAnotherDosomething();

}

privatevoiddoAnotherDosomething()

{

System.out.println("功能B");

}

}

實現二:

package com.wonew.mode;

public class ConcreteDecorate2  extends Decorate

{

publicConcreteDecorate2(Component component)

{

super(component);

}

publicvoiddoSomething()

super.doSomething();

this.doAnotherDosomething();

}

privatevoiddoAnotherDosomething()

{

System.out.println("功能C");

}

}

在具體的裝飾角色中實現了兩個具體的類,而此處正是裝飾模式大的好處,裝飾模式擴展的是對象的功能,不需要增加類的數量,而類繼承擴展是類的功能,在繼承的關系中,如果我們想增加一個對象的功能,我們只能通過繼承關系,在子類中增加一個方法。

關于Junit使用裝飾模式的代碼,再次不再詳細分析,有興趣的同學可以根據上面的類圖具體查看

相關鏈接:
上一頁1234567下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 日韩1| 日韩一区二区三区精品 | 国产成人综合一区精品 | 久久久精品2018免费观看 | 久青草视频在线 | 国产日韩欧美亚洲综合首页 | 手机毛片在线观看 | 狠狠色视频 | 天天摸天天看天天爽 | 国产精品一区在线麻豆 | 亚洲最大视频网 | 97视频免费观看 | 国产精品98视频全部国产 | 激情5月| 五月综合久久 | 波多野结衣久久高清免费 | 久久国| 成人二区| 奇米成人网 | 久久精品国产国产精品四凭 | 日本亚洲欧美国产日韩ay高清 | 日韩精品视频免费网址 | 欧美午夜在线观看 | 波多野结衣久久精品 | 国产精品一区二区久久精品 | 国产你懂的在线观看 | 日韩欧美亚洲中字幕在线播放 | 九九亚洲视频 | 免费搞黄网站 | 91福利社在线观看 | 成年人在线观看视频免费 | 天天狠狠色噜噜 | 日本一区二区三区四区视频 | 最近免费中文字幕完整5 | 手机在线免费看毛片 | 久久er热在这里只有精品85 | 国产成人午夜性a一级毛片 国产成人午夜视频 | 伊人中文字幕在线 | 中国一级毛片aaa片 中国一级毛片 | 欧美a一片xxxx片 | 性一级录像 |