• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

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

    AOP@Work: 對方面進行單元測試

    發布: 2008-10-14 09:20 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 81次 | 進入軟件測試論壇討論

    領測軟件測試網

    假定已經編寫了 上一節中的測試代碼。為了使測試通過,必須將 Highlighter 方面分解為一個抽象方面和一個子方面,如下所示:


    public abstract aspect AbstractHighlighter {
      public abstract pointcut highlightedTextProperties();

      //... aspect continues
    }

    public aspect HighlightResults extends AbstractHighlighter {
      public pointcut highlightedTextProperties() :
      (
      //...define pointcut as before
      );
    }
      
     下一步,用一個只用于測試案例的方面擴展 AbstractHighlighter 方面。下面我將它展示為測試案例的一個靜態內部方面:


    private static aspect HighlightsTestClass extends AbstractHighlighter {
       public pointcut highlightedTextProperties() :
         execution(public String HighlightMockTarget.*(..));
    }

    這個方面通過選擇 mock 目標上所有的方法執行具體化了 highlightedTextProperties 切點。

    優缺點

    顯然,這種測試過程是一種人造的情況。對一個假的對象測試假的方面。不過,這只是表明測試的不是真正的切點。仍然可以驗證建議和抽象方面所指定的 ITD 代碼。在例子中,測試驗證建議正確地編組了來自 ITD 的數據以及原來聯結點的返回值、將它傳遞給一個工具類并返回新的結果。這涉及了相當多的行為。使用一個 mock 目標還使測試更清晰了,因為測試的讀者不必閱讀真正目標的行為以及方面的行為。這種測試在為方面庫編寫單元測試時特別有用,因為只有到了方面加入到具體的應用程序中以后才會有真實的目標。

    如果將方面分解以利用這種模式的好處,那么您可能使它更具可擴展性。比如,如果系統的新部分需要參與突出顯示行為,那么它們可以擴展抽象的方面并定義覆蓋新情況的切點。這樣,抽象方面就與它所建議的系統解耦了。

    模式 2. 測試與 mock 目標匹配的切點

    針對 :橫切規范和功能

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


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

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>