[發明專利]用于單元測試的自動重定向方法調用有效
| 申請號: | 201110084927.4 | 申請日: | 2011-03-28 |
| 公開(公告)號: | CN102207903A | 公開(公告)日: | 2011-10-05 |
| 發明(設計)人: | M·J·布勞德 | 申請(專利權)人: | 微軟公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 上海專利商標事務所有限公司 31100 | 代理人: | 蔡悅 |
| 地址: | 美國華*** | 國省代碼: | 美國;US |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 單元測試 自動 定向 方法 調用 | ||
1.一種用于建立對軟件應用方法的截取以用于測試的計算機實現的方法,所述方法包括:
識別軟件應用模塊的一個或多個方法;
選擇第一個被識別的方法;
將被識別的方法的字節碼復制到可修改的位置;
識別對經復制的被選擇的方法中的一個或多個內層方法的調用;
選擇第一個被識別的內層方法調用;
創建截取方法以替換被選擇的內層方法的原目標方法;以及
將復制的字節碼中的原被調用的內層方法替換為創建的截取方法,使得當被選擇的函數被調用時,該截取方法被調用。
其中,上述步驟由至少一個處理器來執行。
2.如權利要求1所述的方法,其特征在于,識別一個或多個方法包括使用虛擬機或框架的應用程序編程接口(API)來加載軟件應用所針對的軟件應用模塊。
3.如權利要求1所述的方法,其特征在于,識別一個或多個方法包括識別第一入口方法并遞歸地識別所述第一方法調用的其他方法。
4.如權利要求1所述的方法,其特征在于,復制字節碼包括將被選擇的方法復制到為對應用進行單元測試而分配的存儲器。
5.如權利要求1所述的方法,其特征在于,識別調用包括通過調用用于截取字節碼的應用程序編程接口(API)來走查被選擇的方法的字節碼。
6.如權利要求1所述的方法,其特征在于,識別調用包括存儲調用的原目標使得原目標能被截取方法訪問。
7.如權利要求1所述的方法,其特征在于,創建截取方法包括創建掛鉤函數,所述掛鉤函數調用系統來識別由開發者提供的用于軟件應用的單元測試的模擬對象。
8.如權利要求1所述的方法,其特征在于,創建截取方法包括向截取方法提供原方法的標識。
9.如權利要求1所述的方法,其特征在于,替換原被調用的內層方法包括將目標地址替換為截取方法的存儲器地址。
10.如權利要求1所述的方法,其特征在于,還包括將訪問運行時要對其檢查訪問請求的私有數據的字節碼替換為訪問所述私有數據的反射碼以避免訪問檢查。
11.如權利要求1所述的方法,其特征在于,為每個識別的調用和方法重復以下步驟:創建截取方法,以及替換原被調用的內層方法。
12.一種用于對軟件應用代碼進行單元測試的計算機系統,所述系統包括:
處理器和存儲器,所述處理器和存儲器被配置成執行軟件指令;
配置成識別軟件應用中的方法的方法識別組件;
方法克隆組件,其被配置成克隆被識別的方法以創建該方法的可修改副本用于單元測試,使得系統能夠修改該方法以增強可測試性而不要求對原方法的修改;
調用識別組件,其被配置成識別對被識別的方法內的一個或多個其它方法的調用;
調用重定向組件,其被配置成將被識別的對方法的調用替換成對截取方法的調用;
單元測試存儲,其被配置成存儲用于對軟件應用進行測試的一個或多個單元測試;以及
截取處理組件,其被配置成接收對截取函數的調用并調用一個或多個被存儲的單元測試來執行單元測試。
13.如權利要求12所述的系統,其特征在于,所述方法識別組件還被配置成加載包含字節碼的模塊,截取該字節碼,以及識別在該字節碼內定義的方法。
14.如權利要求12所述的系統,其特征在于,所述調用識別組件還被配置成截取被克隆的函數的字節碼并識別用于調用該字節碼中的其它方法的一個或多個指令。
15.如權利要求12所述的系統,其特征在于,所述調用重定向組件還被配置成生成調用所述截取處理組件的截取方法以允許系統調用單元測試來修改被截取的方法的行為。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于微軟公司,未經微軟公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110084927.4/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:粘接片及使用其的太陽能電池
- 下一篇:牙齦卟啉單胞菌感染的預防、治療和診斷





