2.2用Eclipse来DebugFitNesse
在上一节里,简单地讲解了FitNesse脚本和后台代码之间的关系,这是为编写开发组件的代码做准备。但在编写代码之前,有一个技能必须要掌握,那就是——Debug。
说起Debug,我想起了一个朋友和我谈过的一件事情。我的这个朋友在一家外资公司上班,这家公司主要在云计算领域做人事管理软件,他们公司准备要上自动化,就开会为自动化框架做选型。在选型会议中,一个小伙子推荐了一款可以在txt文件里写脚本去调后台Java的框架模型,大家都觉得不错,因为用这种框架写测试案例非常容易。这时有人问了一个问题:它可以Debug吗?一片寂静。
那时他们的框架是全Java框架,包括编写测试案例也必须用Java。这样的话,如果测试案例的某一步出错,可以在Eclipse加断点,然后用Debug去发现问题,虽然这种框架必须要招聘Java程序员编写案例,但是用它编写案列风险小,有问题Debug一下就知道原因出自哪里。
如果不是全Java框架,是不是就不能用Debug了呢?答案是否定的,试想一下,如果我们用FitNesse搭建的框架连Debug都不能做,那么谁还会有信心搭好这个框架呢?下面就说一下如何用Eclipse来DebugFitNesse。
1.在eg包下创建一个新类,命名为DebugTest。内容如下:
packageeg;
publicclassDebugTest{
privateString_name;
privateString_team;
publicvoidsetName(Stringname){
_name=name;
}
publicvoidsetTeam(Stringteam){
_team=team;
}
publicStringpersonInfo(){
Stringinfo="mynameis"+_name+"andmyteamis"+_
team;
returninfo;
}
}
2.在TwoMinuteExample这个测试案例中,单击“编辑”按钮,把所有的内容进行如下替换。
!***<Hidden
!defineTEST_SYSTEM{slim}
'''此处导入后台代码包名'''
!|import|
|eg|
|FitNesse.fixtures|
*!
'''此句话专门用来Debug'''
!defineCOMMAND_PATTERN{java-Xdebug-Xrunjdwp:transport=dt_sock
et,server=y,suspend=y,address=1044-cp%p%m}
'''测试脚本'''
!|script|debugtest|
|setname|james|
|setteam|lakers|
|check|personinfo||
3.保存后不要立刻单击“Test”按钮。先在Eclipse做以下配置。
(1)打断点,如图2-2-1所示。
图2-2-1打断点
(2)右键选择“DebugAs”→“DebugConfigurations”。具体操作如图2-2-2所示。
图2-2-2选择DebugConfigurations
(3)在弹出的对话框里选择“RemoteJavaApplication”,然后按图2-2-3所示进行配置,Port为“1044”,单击“Apply”按钮,此时不要单击“Debug”按钮。
图2-2-3选择“RemoteJavaApplication”
(4)现在开始在你的前台案例里单击“Test”按钮。注意页面会如图2-2-4所示一直停在加载过程中。
图2-2-4单击“Test”按钮
(5)回到Eclipse面板,此时单击“Debug”按钮,如图2-2-5所示。
图2-2-5单击“Debug”按钮
(6)熟悉的Debug控制台呈现在我们面前,如图2-2-6所示。
图2-2-6Debug展示
简单介绍一下RemoteJavaApplication(Java远程调试),Sun在设计JPDA(JavaPlatformDebugArchitecture)时就留下了这个接口,我们只需在服务器上运行Java程序时,给JVM传递几个参数,设定一个监听端口,然后用Debug客户端(Eclipse内置RemoteJavaApplication)来访问这个端口,就可以进行远程调试了。
以下是决定FitNesse是否能调试的关键语句,脚本里要加入这句话:
!defineCOMMAND_PATTERN{java-Xdebug-Xrunjdwp:transport=dt_sock
et,server=y,suspend=y,address=1044-cp%p%m}
作业:
1.观察本节测试用例和后台代码之间的映射关系,留意脚本里setname、setteam,以及personinfo与后台代码之间的关系。观察它们的调用方法和上一节中的表格型调用方法是否有所不同。
2.自己编写一个Java类,然后写一个前台脚本去调用,并Debug。
本文选自《测之重器——自动化测试框架搭建指南》第二章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。