<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            應用設計模式編寫(xiě)易于單元測試的代碼[4]

            發(fā)布: 2010-3-15 10:44 | 作者: 不詳 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 48次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

              應用設計模式編寫(xiě)易于單元測試的代碼[4]   單元測試方法

              Abstract Factory 是另一種被普遍運用的創(chuàng )建型模式,Abstract Factory 通過(guò)專(zhuān)門(mén)的 Factory Class 來(lái)封裝對象創(chuàng )建的職責,并通過(guò)實(shí)現 Abstract Factory 來(lái)完成不同的創(chuàng )建邏輯。如果被測試單元所使用的外部對象是通過(guò) Abstract Factory 創(chuàng )建的,則實(shí)現一個(gè)新的 Concrete Factory,并在此 Factory 中創(chuàng )建 Mock Objects 是一個(gè)比較好的解決辦法。對于 Factory 本身,則可以在 setUp 測試的時(shí)候指定新的 Concrete Factory ;此外,借助依賴(lài)注入框架(如 Spring 的 BeanFactory),通過(guò)依賴(lài)注入的方式將 Factory 注入也是一種不錯的解決方案。對于簡(jiǎn)單的依賴(lài)注入需求,可以考慮實(shí)現一個(gè)應用專(zhuān)有的依賴(lài)注入模塊,或者實(shí)現一個(gè)簡(jiǎn)單的實(shí)現加載器,即根據配置文件載入相應的實(shí)現,從而無(wú)需修改應用代碼,僅通過(guò)修改配置文件即可載入不同的實(shí)現,進(jìn)而方便地修改程序的運行路徑,執行單元測試。

              下面的代碼實(shí)現了一個(gè)簡(jiǎn)單的 InstanceFactory:

              // refer to http://www.opensc-project.org/opensc-java/export/100/trunk/

              // pkcs15/src/main/java/org/opensc/pkcs15/asn1/InstanceFactory.java

              packagecom.instancefactory.demo;

              importjava.lang.reflect.InvocationTargetException;

              importjava.lang.reflect.Method;

              importjava.lang.reflect.Modifier;

              public class InstanceFactory {

              private final Method getInstanceMethod;

              public InstanceFactory(String type) {

              Class clazz =null;

              try {

              clazz = Class.forName(type);

              this.getInstanceMethod = clazz.getMethod("getInstance");

              if(!Modifier.isStatic(this.getInstanceMethod.getModifiers())

              || !Modifier.isPublic(this.getInstanceMethod.getModifiers()))

              throw new IllegalArgumentException(

              "Method [" + clazz.getName()

              + ".getInstance(Object)] is not static public.");

              } catch (NoSuchMethodException e) {

              throw new IllegalArgumentException(

              "Class [" + clazz.getName()

              + "] has no static getInstance(Object) method.", e);

              } catch (ClassNotFoundException e) {

              throw new IllegalArgumentException("Class [" + type + "] is not found");   軟件測試

              }

              }

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: 編寫(xiě) 代碼 單元 模式 應用


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>