TestComplete使用教程:從.NET程序集調用函數(上)
TestComplete是一款具有人工智能的自動UI測試工具,利用自動化測試工具和人工智能支持的混合對象識別引擎,輕松檢測和測試每個桌面,Web和移動應用程序。使用TestComplete,可以提高測試覆蓋率并幫助提供經過實戰考驗的高質量軟件。
在TestComplete中,您可以從腳本中調用駐留在任何.NET程序集中的例程。該程序集可以與.NET Framework或第三方.NET應用程序一起提供。
要求
- TestComplete Desktop模塊的許可證。
- 在TestComplete中啟用的.NET類支持功能。
如果您在訪問.NET類時遇到問題,請選擇“文件”|“其他”。從TestComplete主菜單安裝擴展,然后檢查是否啟用了.NET類支持功能。
通過dotNET對象調用.NET例程
您可以使用特殊dotNET對象訪問.NET程序集、類型和類型成員。
配置項目的CLR橋設置
通過dotNET對象從.NET程序集調用例程:
1、使程序集可用于腳本引擎。
將所需的程序集添加到項目的CLR Bridge列表中。此列表包含.NET程序集,其功能可通過該dotNET對象供腳本使用:
- 選擇工具|從TestComplete主菜單中選擇“當前項目屬性”。
- 選擇“CLR橋”類別。
- 要從全局程序集緩存(GAC)中添加一個或多個程序集,請單擊“瀏覽GAC”并選擇所需的程序集。
- 要從磁盤添加一個或多個程序集,請單擊“瀏覽文件”,然后選擇所需的文件。
注意事項:
- TestComplete始終可以訪問mscorlib.dll程序集(即使它不在CLR Bridge列表中)。您始終可以在測試中使用mscorlib.dll的類。
- 從列表中刪除部件后,單擊“重新加載”以解鎖部件的文件。否則,TestComplete將保持程序集鎖定以進行讀寫訪問,直到退出TestComplete。
2、指定托管過程的類型。
TestComplete將.NET程序集加載到幫助程序托管進程tcHostingProcess.exe中。TestComplete可以同時使用32位和64位程序集,并且托管進程的位數必須與程序集的位數匹配。否則,TestComplete將無法將程序集加載到托管進程。
程序集托管過程設置的“首選”體系結構定義了托管過程的位數??赡艿闹禐椋?/span>
- 32位
- 64位
- 與操作系統相同
注意事項:
- TestComplete可以創建64位托管進程,并且只能在64位操作系統中在其中加載64位程序集。
- 32位程序集只能在32位托管進程中加載,而64位程序集只能在64位托管進程中加載。因此,如果程序集列表同時包含32位和64位程序集,則TestComplete將不會加載位數與托管進程的位數不匹配的程序集。
- 當您打開兩個項目并且其中一個使用32位托管過程,而另一個使用64位托管過程時,TestComplete將創建兩個托管過程實例:一個用于32位程序集,另一個用于64位程序集。
- TestComplete在項目之間共享托管過程。它不會為每個測試項目創建單獨的過程。也就是說,具有相同CRL橋位數的所有項目都將使用相同的托管流程實例。
3、指定調用線程的類型。
若要指定調用線程的單元模型,請使用屬于項目屬性的CLR Bridge組的調用線程設置的“首選單元”模型??赡艿闹禐椋?/span>
- 單線程模型
- 多線程模型
- 并不重要
從.NET程序集調用例程
添加到CLR Bridge選項的程序集在腳本中可用作該dotNET對象的子對象。在特定程序集中定義的類型又是程序集節點的子對象。與類型相對應的對象提供對在此類型中定義的子類型,靜態成員和構造函數的訪問。
“代碼完成”窗口顯示所有可用的程序集,類型和類型成員:
調用.NET類的靜態成員:
dotNET.namespace.class.subclass.method(parameters) dotNET.namespace.class.subclass.property(parameters)
TestComplete自動將您作為參數傳遞的簡單數據類型(例如字符串、整數和布爾值)轉換為.NET兼容值。
僅當對象類型的參數是System.Object該類的后代時,才能將其傳遞給CLR Bridge引擎。否則,將發生類型不匹配錯誤。
使用點將名稱空間和類名稱(和子類名稱)分開。用下劃線字符替換名稱空間名稱中使用的點。
調用非靜態成員:
首先,通過調用類構造函數或創建新類實例的靜態成員來創建所需類的實例:
dotNET.namespace.class.zctor() dotNET.namespace.class.zctor_2(parameters)
注意:通常,類的構造函數名稱為_ctor()。一個類可以具有多個構造函數(_ctor()、_ctor2()、_ctor3()等。但是,在VBScript中,標識符不能以下劃線(_)開頭。因此,為使_ctor方法與VBScript兼容,TestComplete用z方法名稱中的字母替換前導下劃線字符。例如,要調用該_ctor3方法,請使用zctor_3。
通過應用程序域調用.NET例程
對應于.NET應用程序的所有過程對象都具有AppDomain方法。該方法提供對應用程序域的訪問。AppDomain方法返回的對象是.NET AppDomain對象的包裝器。
TestComplete dotNET向基礎.NET AppDomain對象添加一個額外的屬性。該屬性提供對在應用程序中定義的類和在加載到應用程序域中的程序集中定義的類的訪問。
注意:該dotNET屬性還提供對mscorlib.dll程序集中聲明的所有類的訪問。
通過AppDomain調用類成員:
Sys.Process("MyProcessName").AppDomain("AppDomainName").dotNET.namespace.class.subclass.method(parameters) Sys.Process("MyProcessName").AppDomain("AppDomainName").dotNET.namespace.class.subclass.property(parameters)
調用非靜態成員:
首先使用類構造函數或特殊的靜態成員創建一個類實例(請參見上文):
Sys.Process("MyProcessName").AppDomain("AppDomainName").dotNET.namespace.class.zctor() Sys.Process("MyProcessName").AppDomain("AppDomainName").dotNET.namespace.class.zctor_2.(parameters)
AppDomain.dotNET與dotNET對象相比,該屬性的優點在于,您可以創建應用程序類的實例,而無需將應用程序程序集添加到項目的CLR Bridge列表中。
如果需要創建.NET對象以將其作為參數傳遞給應用程序例程,建議您使用應用程序域來創建該對象。這樣,如果您的計算機上安裝了多個.NET Framework版本,則可以避免兼容性問題。
本教程內容較多,分為上下兩篇文章,想要了解該教程下半部分,請繼續關注我們慧都網~您也可以下載TestComplete試用版免費評估~
相關內容推薦: