不谋万世者,不足谋一时;不谋全局者,不足谋一域。君子敏于事而慎于言
新浪微薄:土司阿哈
在RFT中运用手动验证点验证自定义类型对象 (三)
上一篇 /
下一篇 2008-09-18 23:22:52
/ 个人分类:Rational
理解了IManageValueClass接口各方法的作用,我们就可以来实现这个ValueManager--MyPointValue了。如上文所述,有7个方法需要实现。其中最关键的是4个方法:
fTl:I.g-_f0 持久化输出方法
public void persistOut(Object obj, IPersistOut persistout,51Testing软件测试网d.h'Z3^(slj}G IAuxiliaryDataManager auxdatamanager) |
51Testing软件测试网#}sSOR%^%dv51Testing软件测试网C
G
W
\"E9J 该方法通过persistout将对象obj的属性写入到磁盘上。obj就是要写入的对象,persistout是负责写操作的接口,由RFT传入,auxdatamanager是用于命名相关文件的接口,由RFT传入,通常不是使用到这个参数。51Testing软件测试网:qH)~~Ib4g4_f.g0O
51Testing软件测试网,H;kR-HXr4[ 以MyPoint为例,下面的代码段将MyPoint的属性x,y依次记录到磁盘上:
N&sx%po:Y03[k;lW%ijZM0 以下是代码片段:
public void persistOut(Object obj, IPersistOut persistout,51Testing软件测试网5iW#K Z1k&@R IAuxiliaryDataManager auxdatamanager)51Testing软件测试网ce1D,~KD {51Testing软件测试网5LU}K^G8fhs%J*kx if (obj instanceof MyPoint)51Testing软件测试网(`)g@*K@]8u3} {51Testing软件测试网V9{ki+tG
X4V MyPoint point = (MyPoint)obj; !IK0XQ1O.X(a0 // persistout是负责写的接口,51Testing软件测试网3ut
F$qlE|D0N(Y //write方法接受的第一个参数是要写入的属性的名称51Testing软件测试网9f7tUU G9Xr //第二个参数是要写入的属性值 JCEbFgzM H7v.Y0 persistout.write("X", point.getX()); 'H k6{)F#kJA0 persistout.write("Y", point.getY());51Testing软件测试网D.s:P7ht EaI } R ~tSfQj
m0 } |
51Testing软件测试网k'`B7FtM#oS51Testing软件测试网c8t8g
U"o*jA;P8iU 对于测试开发人员来说,这里写入了哪些属性,将来哪些属性才能够被恢复出来。51Testing软件测试网O~6R/]/o1H
%eCl(A l3b^
^!V0 持久化恢复方法51Testing软件测试网P(uH4xr*Eh
/L6?0so(S2\W4l0 RFT 提供两个方法读入持久化了的对象。一种接受IPersistIn类型的参数,另一种接受IPersistInNamed类型的参数。二者的不同在于,前者是根据对象属性的存储顺序进行读取的,而后者是按照对象的属性名称进行读取。以MyPointValue为例, 方法一的实现如下:
public Object persistIn(IPersistIn persistin, IAuxiliaryDataManager auxdatamanager) WUW5B;G'f$A{yO&Wg0 {51Testing软件测试网6z6C5e0QS6o(~*^ // 在persistOut方法中,是按照x,y的先后顺序写入磁盘的, M[XtA_0 // 那么在该方法中就需要按照x,y的顺序将其读取出来read的参数就是写入磁盘的序号。 L8rn7w
Em9x3eW0 int x = ((Integer)persistin.read(0)).intValue();51Testing软件测试网"e+L [#dw(m int y = ((Integer)persistin.read(1)).intValue();51Testing软件测试网qH+\!tw8E return new MyPoint(x, y); e9O!QY#Vhr M0 } |
51Testing软件测试网3|s.a_{&V,y2co4| z'\\oP1U0 方法二的实现如下:
public Object persistIn(IPersistInNamed persistinnamed, IAuxiliaryDataManager auxdatamanager)51Testing软件测试网aYbuLzW7T { ,B0^+_6M5n KA`0 // 该方法根据persistOut时写入的属性名称读取属性,read的参数是属性名称 JCe+j-k)y0 int x = ((Integer)persistinnamed.read("X")).intValue(); HcI0MQ)OEA0 int y = ((Integer)persistinnamed.read("Y")).intValue(); gS:h9Pd$G0 return new MyPoint(x, y);51Testing软件测试网+vB(x?&c$\ } |
3K&h#I ?:N0n;Q0 ht
ht)e*h+_g0 比较方法51Testing软件测试网5C3yV\,XOdp#\
51Testing软件测试网9]"y+M#\ QW public int compare(Object obj1, Object obj2, ICompareValueClass comparedvalueclass)
Yb%{eJ?} \%v3I051Testing软件测试网 I7{b(K6|7C compare方法用于确定两个对象一致与否,其前两个参数为要比较的对象,返回值则为一个0-100之间的整数,返回值越大则被比较的对象越相似。51Testing软件测试网cs| ]j
+?P$r']3pA|i0 以MyPointValue为例,其比较原则是,如果二者相等则返回100(表示不同),否则返回0(表示相同)。
public int compare(Object obj1, Object obj2, ICompareValueClass comparedvalueclass)51Testing软件测试网0j/r-N w"yQV} { i-uB v1?~)zO0 if ((obj1 instanceof MyPoint) && (obj2 instanceof MyPoint)) K.sXF%T0 {51Testing软件测试网~2Z1P:T8WI-V MyPoint point1 = (MyPoint)obj1; FbW!`z9G2A;kAO4L0 MyPoint point2 = (MyPoint)obj2; $cjH{+UTOf'nO.G0 return (point1.getX()==point2.getX() && point1.getY()==point2.getY()) ? 100 : 0;51Testing软件测试网(}9S dOA%dv } Zc:J
k N$e-@k5r0 else Q5^U7XL i
lh0 {51Testing软件测试网(Ue%F0?#y%Mm return 0;
h9p6JH2ESEX'B0 } *M/MmgM/\5N:o0 } |
51Testing软件测试网Z,JLc"M'zdFl6@;M转载于
http://softtest.chinaitlab.com/bug/755952_3.html
相关阅读:
- 使用Rational ClearQuest实现软件缺陷正交分析--PDF (fishy, 2008-7-14)
- 在 Rational Functional Tester 中如何判断页面是否下载完毕 (caption, 2008-7-16)
- 利用 Rational Functional Tester 实现 ITCL (或者 IBM) 框架 (caption, 2008-7-29)
- IBM Rational:12种新的SOA工具 (Kingson, 2008-8-03)
- Rational Robot 初次使用指南 (51testing, 2008-8-21)
- RFT出现异常截图,再杀IE进程 (wonew1228, 2008-8-28)
- RFT中代码不能完全显示的解决方法 (caption, 2008-9-09)
- Rational 完成自动化功能测试 (caption, 2008-9-12)
- 在RFT中运用手动验证点验证自定义类型对象 (一) (wonew1228, 2008-9-18)
- 在RFT中运用手动验证点验证自定义类型对象(二) (wonew1228, 2008-9-18)
收藏
举报
TAG:
Rational