一种轻量级、可重用、可扩展的 OSGi 应用程序测试框架
2009-12-01 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄧ粯銇勯幒瀣仾闁靛洤瀚伴獮鍥敍濮f寧鎹囬弻鐔哥瑹閸喖顬堝銈庡亝缁挸鐣烽崡鐐嶆棃鍩€椤掑嫮宓佸┑鐘插绾句粙鏌涚仦鎹愬闁逞屽墰閹虫捇锝炲┑瀣╅柍杞拌兌閻ゅ懐绱撴担鍓插剱妞ゆ垶鐟╁畷銉р偓锝庡枟閻撴洘銇勯幇闈涗簼缂佽埖姘ㄧ槐鎾诲礃閳哄倻顦板┑顔硷工椤嘲鐣烽幒鎴旀瀻闁规惌鍘借ⅵ濠电姷鏁告慨顓㈠磻閹剧粯鈷戞い鎺嗗亾缂佸鏁婚獮鍡涙倷閸濆嫮顔愬┑鐑囩秵閸撴瑦淇婇懖鈺冪<闁归偊鍙庡▓婊堟煛鐏炵硶鍋撻幇浣告倯闁硅偐琛ラ埀顒冨皺閺佹牕鈹戦悙鏉戠仸闁圭ǹ鎽滅划鏃堟偨缁嬭锕傛煕閺囥劌鐏犻柛鎰ㄥ亾婵$偑鍊栭崝锕€顭块埀顒佺箾瀹€濠侀偗婵﹨娅g槐鎺懳熺拠鑼舵暱闂備胶枪濞寸兘寮拠宸殨濠电姵纰嶉弲鎻掝熆鐠虹尨宸ョ€规挸妫濆铏圭磼濡搫顫嶇紓浣风劍閹稿啿鐣烽幋锕€绠婚悹鍥у级瀹撳秴顪冮妶鍡樺鞍缂佸鍨剁粋宥夋倷椤掍礁寮垮┑鈽嗗灣閸樠勭妤e啯鍊垫慨妯煎亾鐎氾拷

OSGi 的架构为 Java 程序的模块化开发和模块的重用提供了很多便利,但是也正是由于 OSGi 中架构的一些限制,使得目前的 Java 测试方法(比如 JUnit)无法直接应用于 OSGi 运行时框架。
在 OSGi 中使用 Bundle 来定义个程序模块,Bundle 包含了一组 Java 类以及一些附加的描述信息。Bundle 的生命周期由 OSGi 运行是框架维护,而且 Bundle 之间往往具有相互依赖和调用的关系。所以 OSGi 下的测试用例,需要运行在 OSGi 的运行框架中,并且往往需要多个 Bundle 之间的交互。而传统的 JUnit 测试方法,并没有提供测试用例在 OSGi 下的运行方法。
Bundle 对其包含的 Java 包有严格的访问限制,只有少数的接口包能够被其他的 Bundle 访问到。而在测试中,我们经常需要测试 Bundle 内非 Public 的包。如何避开 Bundle 的访问限制,测试 Bundle 内部包成为 OSGi 测试中的一个新问题。
在编写测试代码是,我们总是希望做到测试代码能够和业务代码分离,也就是说在能够很好的运行测试用例的同时,产品发布时又不需要太多的工作来分离测试代码。在 OSGi 框架下,如何分离测试代码和业务代码,同时又不影响测试代码访问业务代码,也成为一个新的问题。
本文将针对以上提到的问题,介绍一种轻量级、可重用、可扩展的 OSGi 测试方案,并用具体的例子来介绍如何使用该方法。
基本原理
如图 1 所示,我们将测试代码(Test Suite)封装在单独的 Bundle 运行在 OSGi 中。并且提供了 Test Framework Bundle 来管理测试 Bundle。Test Framework Bundle 提供了用户接口,用户可以通过调用该接口来运行相应的测试用例,并且得到测试结果。
图 1. 测试框架基本原理
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››轻量级数据交换格式 JSON轻松入门
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››轻量级系统 Lubuntu 10.04 发布
- ››扩展 JUnit 测试并行程序
- ››轻量级AOP框架-移植python的装饰器(Decorator)到C...
- ››轻量级AOP框架-移植python的装饰器(Decorator)到C...
更多精彩
赞助商链接