RFT與Spring結(jié)合進(jìn)行自動化腳本開發(fā)之一

字號:

Spring具有強(qiáng)大的功能:Ioc,可以實(shí)現(xiàn)在xml中把一個測試對象注入到另一個測試對象中,再加上可以利用RFT的find方法可以把spring的配置文件配置成一張RFT測試對象地圖。目前,大部分自動化腳本開發(fā)者利用RFT的測試對象地圖管理測試腳本的測試對象,RFT的測試對象地圖有兩種類型:公有測試對象地圖和私有測試對象地圖。
    (1)大部分腳本采用的都是私有測試對象地圖,如果被測試的程序頂層對象發(fā)生變化,這樣每個腳本關(guān)聯(lián)的測試對象地圖都要進(jìn)行修改,之所以這樣,有一個原因:在RFT中測試對象地圖不能夠繼承(僅僅可以合并),如果兩個測試對象地圖之間可以進(jìn)行繼承,這樣把公用的測試對象放在父測試對象地圖中,其他的測試對象地圖繼承這個公用的測試對象地圖(同時繼承公有的測試對象),如果被測試程序頂層框架發(fā)生變化,僅僅只修改父測試對象地圖就可以了,但是目前RFT中不能實(shí)現(xiàn)(據(jù)我了解)。
    (2)RFT中還有一種類型的測試對象地圖是公有的測試對象地圖,公有的測試對象地圖可以實(shí)現(xiàn)公用的測試對象重復(fù)使用,如果測試對象是一模一樣的,RFT在公有的測試對象地圖中只保留此測試對象的一個實(shí)例,但是把多個測試對象都插入到一個測試對象地圖中,同樣又面臨著難以管理的困難。
    (3)另外,RFT中的測試對象地圖與腳本緊緊的耦合,如果程序即使發(fā)生很小的變動,也要更新測試對象地圖,修改腳本等等。
    (4)一個spring配置文件可以被另一個spring文件import進(jìn)來。這樣可以把公有的測試對象放在一個spring配置文件中,然后有其他的spring配置文件進(jìn)行導(dǎo)入,可以實(shí)現(xiàn)測試對象地圖(spring的配置文件)的繼承。另外,在spring的配置文件中,可以注入一個對象的屬性,這樣可以人工的更改這個測試對象的父框架,另外可以可以注入測試對象的識別屬性,這樣可以進(jìn)行人為的進(jìn)行測試對象識別屬性的更改(這樣可以更好的應(yīng)對被測試程序的變化)。
    例如:
    xml 代碼
    <!--從classpath(類路徑)中導(dǎo)入base-test-object-map.xml文件 可以使用base-test-object-map.xml文件中定義的bean-->
    <!--導(dǎo)入時候要包含完整的包名-->
    <import resource="classpath:pkg/base-test-object-map.xml"/>
    <!--設(shè)置待查找對象的識別屬性 格式:propertyName-propertyValue-->
    <property name="objectProperties">
    <list>
    <!--屬性名稱和屬性精確匹配用=-->
    <!--屬性名稱和屬性用正則表達(dá)式匹配用:-->
    <value>.class=Html.FORMvalue> 然后是怎么使用spring配置文件中的測試對象
    <value>.name:.*Formvalue>
    list>
    property>
    <!--設(shè)置從什么對象開始查找 注入父測試對象-->
    <!--browserTestObject 引用的是base-test-object-map.xml文件中已經(jīng)定義的bean-->
    <property name="parentTestObject">
    <ref bean="browserTestObject"/>
    property>
    在腳本中引用測試對象通過如下語句:
    java 代碼
    TextGuiTestObject text_userName = new TextGuiTestObject((TestObject)context.getBean("userNameText"));
    text_userName.setText("system");