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