(1)大部分腳本采用的都是私有測試對象地圖,如果被測試的程序頂層對象發生變化,這樣每個腳本關聯的測試對象地圖都要進行修改,之所以這樣,有一個原因:在RFT中測試對象地圖不能夠繼承(僅僅可以合并),如果兩個測試對象地圖之間可以進行繼承,這樣把公用的測試對象放在父測試對象地圖中,其他的測試對象地圖繼承這個公用的測試對象地圖(同時繼承公有的測試對象),如果被測試程序頂層框架發生變化,僅僅只修改父測試對象地圖就可以了,但是目前RFT中不能實現(據我了解)。
(2)RFT中還有一種類型的測試對象地圖是公有的測試對象地圖,公有的測試對象地圖可以實現公用的測試對象重復使用,如果測試對象是一模一樣的,RFT在公有的測試對象地圖中只保留此測試對象的一個實例,但是把多個測試對象都插入到一個測試對象地圖中,同樣又面臨著難以管理的困難。
(3)另外,RFT中的測試對象地圖與腳本緊緊的耦合,如果程序即使發生很小的變動,也要更新測試對象地圖,修改腳本等等。
(4)一個spring配置文件可以被另一個spring文件import進來。這樣可以把公有的測試對象放在一個spring配置文件中,然后有其他的spring配置文件進行導入,可以實現測試對象地圖(spring的配置文件)的繼承。另外,在spring的配置文件中,可以注入一個對象的屬性,這樣可以人工的更改這個測試對象的父框架,另外可以可以注入測試對象的識別屬性,這樣可以進行人為的進行測試對象識別屬性的更改(這樣可以更好的應對被測試程序的變化)。
例如:
xml 代碼
<!--從classpath(類路徑)中導入base-test-object-map.xml文件 可以使用base-test-object-map.xml文件中定義的bean-->
<!--導入時候要包含完整的包名-->
<import resource="classpath:pkg/base-test-object-map.xml"/>
<!--設置待查找對象的識別屬性 格式:propertyName-propertyValue-->
<property name="objectProperties">
<list>
<!--屬性名稱和屬性精確匹配用=-->
<!--屬性名稱和屬性用正則表達式匹配用:-->
<value>.class=Html.FORMvalue> 然后是怎么使用spring配置文件中的測試對象
<value>.name:.*Formvalue>
list>
property>
<!--設置從什么對象開始查找 注入父測試對象-->
<!--browserTestObject 引用的是base-test-object-map.xml文件中已經定義的bean-->
<property name="parentTestObject">
<ref bean="browserTestObject"/>
property>
原文轉自:http://www.anti-gravitydesign.com