用Jython构建JUnit测试包[Java编程]
本文“用Jython构建JUnit测试包[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
JUnit 测试框架被越来越多的开辟小组所共同利用.归功于各种各样的测试装具模块,目前可以测试构成任何 Java 利用程序的几近每一个组件.事实上,几近整个二级市场仿佛都是用环绕 Junit 成立的.包含 Cactus、jfcUnit、XMLUnit、DbUnit 和 HttpUnit 这样的装具模块都可免得费供开辟人员用于测试利用程序.随着系统的复杂程度的增添,并且有这么多工具可供利用,没有什么来由不依靠单元测试.
不过,开辟人员不但仅是程序员.我们与用户交互以修复 bug 并肯定需求.我们参与会议并举行电话推销.我们完成一些(有时全部)质量保证功效.既然有这么多责任,但愿尽大概自动化就是自但是然的了.因为好的团队(除了其他事情外)会举行大量测试,但愿自动化差别的开辟历程的人常常会对这一范畴举行具体研究.
自动化单元测试
有很多种自动化全部项目测试用例的定位和履行的办法.一种办理筹划是结合利用 Ant 的 junit 任务与嵌入的 fileset 任务.这样便可以包含和解除特定目录中的文件(基于文件名款式).另一种挑选是利用 Eclipse 的一个功效,它可以指定全部测试所在的和履行的目录.前一种挑选供应了对运行的测试举行过滤的机动性(并且由于它是一个纯粹的无头(headless)Java 利用程序,可以运行在几近全部地方),后一种挑选可以调试“动态”包.能否可以结合这两种方法的强盛和机动性?
有了 Python 编程语言的 Java 平台实现 -- Jython,答复是清脆的“可以!”(假如不熟习 Jython,该当在持续本文之前增补这方面知识,更多信息请参阅背面的 参考资料).操纵 Jython 的强盛和文雅,可以保护一个定位文件系统、搜索匹配某种款式的类和动态编译 JUnit TestSuite 类的脚本.这个 TestSuite 类像全部其他静态定义的类一样,可以用爱好的调试程序简单地调试.(在本文中利用的例子假定利用的是 Eclipse IDE,不过,我在这里描写的技术不用做很多改正便可以用于大大都其他 IDE.)
在举行任何计划决按时,必须对所做的挑选和决意的影响举行衡量.在这里,为了得到调试动态生成的测试包的本领,必须增添额外的复杂性.不过,这种复杂性被 Jython 自身所减轻了:Jython 经过很好测试并得到很好的支持,并且是开放源代码的.并且,Python 越来越成为面向对象的、平台独立的编程的事实上的尺度.出于这两种缘由,采取 Jython 的风险很少,分外是它供应了这样的好处:在成立和调试动态生成的 JUnit TestSuite 类方面具有没有可匹敌的机动性.
假如能否采取 Jython 是主要的考虑,那么即便不利用它也可以在办理本来的问题方面有所进展.不利用 Jython 的话,可以用一个 Java Property 文件存储一组类、目录和包,以在包中加入大概解除测试.不过,假如挑选利用 Jython,便可以操纵整个 Python 语言和运行时来办理挑选履行哪些测试的问题.Python 脚本比 Java Property 文件机动得多,它只受限于您的想像力.
操纵 Jython 与 Java 平台的无缝集成可以成立静态定义的、但是是动态构建的 TestSuite 类.有大量关于 JUnit 的教程,不过还是看下面这两行代码作为复习.清单 1 是静态构建 TestSuite 类的一个例子(这个例子取自 JUnit: A Cook's Tour,有关它和其他 JUnit 资源的链接请参阅 参考资料):
清单 1.静态定义 TestSuite
public static Test suite() {
return new TestSuite( MoneyTest.class );
}
清单 1 表明 TestSuite 是由 Test 类的类实例构成的.这个装具模块完好操纵了这一点.为了解析这个工具的代码,应从 参考资猜中下载本文的示例 JAR 文件.这个文档包含两个文件:DynamicTestSuite.java 和 getalltests.py,前者是一个用 Phthon 脚本动态生成 TestSuite 的 JUnit 测试装具模块,后者是一个搜索匹配特定款式的文件的 Python 脚本.DynamicTestSuite.java 利用 getalltests.py 构建 TestSuite .可以改正 getalltests.py 以更好地合适自己的项目的需求.
理解测试装具模块
代码是若何工作的?首先,指派 getalltests.py 获得一组要履行的 Test 类.然后,利用 Jython API 将这个列表从 Python 运行时环境中提取出来.然后利用 Java Reflection API 构建在表示 Test 类名的列表中的 String 对象的类实例.最后,用 JUnit API 将 Test 增添到 TestSuite 中.这四个库的彼此配合可以实现您的目标:动态构建的 TestSuite 可以像静态定义的那样运行.
看一下清单 2 中的 JUnit suite 清单.它是一个公开 public static TestSuite suite() 办法签名的 TestCase .由 JUnit 框架调用的 suite() 办法调用 getTestSuite() , getTestSuite() 又调用 getClassNamesViaJython() 以获得一组 String 对象,此中每一个对象表示一个作为包的一部份的 TestCase 类.
以上是“用Jython构建JUnit测试包[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |