当前位置: 首页 > 专利查询>杜振军专利>正文

针对Java ME软件中MIDlet主类的测试方法技术

技术编号:3757364 阅读:561 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种针对Java ME软件中MIDlet主类的测试方法,它通过建 立MIDlet主类的常规测试类与特殊测试类相结合的方式,实现对MIDlet主类 的测试;特殊测试类是通过对MIDlet主类做源代码插装,可保留MIDlet类身 份的同时又成为一个TestCase类,将测试方法和原方法放在同一个类中,方便 地对私有方法写测试,也可以实现对MIDlet主类中用户界面相关的方法写测试; 定制TestSuite类,保证MIDlet主类的各种测试类与其他类的测试类统一管理。 本发明专利技术首次实现了在JMUnit测试框架下对MIDlet主类做完整测试。适于在Java ME移动设备应用程序测试中广泛推广。

【技术实现步骤摘要】

本专利技术涉及一种嵌入式软件测试方法,尤其涉及一种Java ME嵌入式软件 中的MIDlet主类的测试方法。
技术介绍
Java ME (Java Micro Edition),也被称作J2ME,是为机顶盒、移动电话 和PDA之类的嵌入式消费电子设备提供的高度优化的Java语言平台。MIDlet是 一种运行在符合MIDP规范的设备上的Java ME应用程序,是当前主要的一种Java ME应用程序类型。目前支持Java的手机都支持MIDlet 。 一个MIDlet包括至少 一个派生自MIDP定义的抽象类javax. microedition. midlet. MIDlet的Java类, 我们称此Java类为MIDlet主类。xUnit是编写软件测试用例最常用的框架。实际上,它是适用于不同编程语 言和不同应用目的的一组测试框架,其中JUnit是应用最广泛的基于xUnit的 Java测试框架,但是该框架不能直接用在Java ME环境,因为Java ME不支持 反射API,而反射API正是JUnit必需用到的。人们做了大量工作将JUnit移植 到Java ME领域,其中主要有J2MEUnit和JMUnit和Mobi 1 e JUnit三种,而JMUni t 更以它的高效、易用、简单和开源等优良特性成为移动程序开发者的首选。然而,目前基于这些流行的Java ME测试框架编写的测试用例都存在一个 很难解决的问题,就是都无法对MIDlet主类进行完整测试。因为对MIDlet主 类实现测试,最大的障碍在于MIDlet实例化的问题,由于当前MIDP规范不允 许在应用程序中实例化MIDlet (只有AMS——虚拟机层面才有这样的授权)。因 此当前Java ME程序的测试用例都是针对非MIDlet类建立,都在回避MIDlet 主类测试的问题。因而也直接影响了 MIDlet应用程序测试的完整性。在当前最 流行的Java ME测试框架JMUnit中,实现一种对MIDlet主类进行完整测试的 方法具有积极的意义,也是急需解决的问题。
技术实现思路
本专利技术针对以上问题的提出,而研制一种针对Java ME嵌入式软件中的 MIDlet主类的测试方法。它通过建立MIDlet主类的常规测试类与特殊测试类相结合的方式,实现对MIDlet主类的测试;特殊测试类是通过对MIDlet主类做源代码插装,实现保留MIDlet类身份的同时又成为一个TestCase类,将测试方法和原方法放在同一个类中,不需在测试方法中对被测类做实例化,而且可以方便地对私有方法写测试,也可以实现对MIDlet主类中用户界面相关的方法写测试;通过定制TestSuite类,可以将MIDlet主类的各种测试类与其他类的测试类统一管理。其具体实现技术手段如下一种Java ME嵌入式软件中的MIDlet主类的测试方法,其特征是,包括以下步骤a、 首先,按JMUnit测试框架中建立常规TestCase类的方式,生成一个或多个针对MIDlet主类的常规TestCase类;b、 然后,在对MIDlet主类做备份的情况下,将MIDlet主类做源代码插装,使之成为JMUnit框架下的特殊TestCase类;c、 建立TestSuite类,将上述两步骤建好的两种TestCase类以及其他类的TestCase类加入TestSuite中统一管理;d、 以启动MIDlet的方式运行前面得到的TestSuite类进行测试。步骤a的实现方式如下步骤(1) 要在TestCase类的构造方法中得到MIDlet主类的一个实例对象;(2) TestCase类中的各个测试方法均要引用(1)中得到的实例对象对主类进行测试。所述步骤b的具体步骤如下(1) 将MIDlet主类做备份;(2) 修改原MIDlet主类的父类为TestCase类;(3) 在保留MIDlet主类的构造方法体内容的基础上,在构造方法体内添加对父类TestCase类构造方法的调用;(4) 将MIDlet主类中的生命周期相关的方法更名;(5) 在MIDlet主类中添加各个测试方法。所述步骤(5)中,在MIDlet主类中添加的测试方法如下(1) 添加针对MIDlet主类中的原方法做测试的各个测试方法;(2) 在遵守JMUnit框架的要求的条件下,实现测试执行的管理方法,并按常规方式实现setUp与tearDown方法;步骤c中所述TestCase类加入TestSuite中,采用以JMUnit框架中的TestSuite类为父类,定制一个本测试方法中需要的TestSuite类,在该TestSuite类的构造方法体内使用add方法添加前面改造好的TestCase类的实例。步骤c中所述TestCase类加入TestSuite中,还可以采用JMUnit中缺省的TestSuite类,直接在JAD文件中增加JMUnitTestClasses属性描述各个TestCase类。本专利技术实现了一种可对MIDlet主类做完整测试的方法,能够在当前流行的Java ME测试框架JMUnit中实现,不对JMUnit测试框架本身做改动,不影响对其他非MIDlet类做测试,并可将MIDlet主类的测试与非MIDlet类的测试统一管理,可与测试框架无缝集成。本方法可以作为当前测试框架的补充功能,实施简便,可以方便地集成进Eclipse与Netbeans等流行的开发平台中使用。附图说明图1是本专利技术的实施过程流程图。图2是在一个在NetBeans平台上的实施结果图。具体实施例方式结合图l所示流程图,来说明本专利技术的具体实现过程。首先,按JMUnit测试框架中建立常规TestCase类的方式,生成一个针对MIDlet主类的常规TestCase类。(1) 要在TestCase类的构造方法中得到MIDlet主类的一个实例对象。由于JMUnit测试框架中的TestCase类为一个MIDlet,可以在一个MIDlet的构造方法中得到另一个MIDlet的实例,也只有这样才能得到可在程序中操纵的一个MIDlet实例;(2) TestCase类中的各个测试方法均要引用(1)中得到的实例对象对主类进行测试。这种针对MIDlet主类的TestCase类可以对MIDlet主类中部分非私有方法做测试,可能会有某些简单的MIDlet主类只需要用这种常规的TestCase类去测试即可。但是对一般的MIDlet主类的测试,往往还需要建立下面的特殊TestCase类,以实现对常规难测的方法写测试。然后,在对MIDlet主类做备份后,将MIDlet主类做源代码插装,使之成为JMUnit框架下的特殊TestCase类。实现既保留MIDlet类的身份又要变成一个TestCase类。(1) 将MIDlet主类做备份。(2) 采用向MIDlet主类直接注入代码的方式,而不更改MIDlet主类名,是因为其他类中可能会用到MIDlet主类类名。在MIDlet主类中添加对jmunit类库的导入;然后将MIDlet主类的父类由MIDlet修改为TestCase。由于TestCase类本身是一个MIDlet类,这样也会保留原MIDlet主类的MIDlet身份特征。(3) 在保留MIDlet主类的构造方法体内容的基础上,在构造方法体内添本文档来自技高网
...

【技术保护点】
一种Java ME嵌入式软件中的MIDlet主类的测试方法,其特征是,包括以下步骤: a、首先,按JMUnit测试框架中建立常规TestCase类的方式,生成一个或多个针对MIDlet主类的常规TestCase类; b、然后,在 对MIDlet主类做备份的情况下,将MIDlet主类做源代码插装,使之成为JMUnit框架下的特殊TestCase类; c、建立TestSuite类,将上述两步骤建好的两种TestCase类以及其他类的TestCase类加入TestS uite中统一管理; d、以启动MIDlet的方式运行前面得到的TestSuite类进行测试。

【技术特征摘要】

【专利技术属性】
技术研发人员:杜振军陈荣王正磊王文军
申请(专利权)人:杜振军陈荣王正磊王文军
类型:发明
国别省市:91

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1