junit是一个优秀的用于单元测试的框架,在j2se,j2ee的开发过程被广泛使用,它使得代码的质量得到更好的监控和维护。然而对于j2me平台一切就不是如此简单了,由于手持设备需要更多的考虑性能问题,j2me平台并没有提供反射(reflectiong)的api,因此junit的很多功能无法在j2me上实现,程序员也就无法在j2me平台上使用junit进行单元测试。本文将介绍一个能对j2me应用程序进行单元测试的工具:j2meunit。j2meunit是一个基于junit实现的针对j2me平台的单元测试框架。详细介绍请看:http://j2meunit.sourceforge.net/。
运行环境
本文的示例程序的运行和测试都是在eclipse3.1下进行,并需要到如下网址下载j2meunit的最新版本:
http://j2meunit.sourceforge.net/
下载后如为rar/zip压缩包,须先解压。
helloworld 实例
本文将通过一个helloworld的例子来介绍j2meunit的基本使用方法。首先在eclipse中新建一个j2me midlet suite工程。file->new->project->j2me midlet suite,取名为hellomidlet。
此工程包括两个类:helloworld.java和helloworldmidlet.java。首先在工程底下新建包名hello,然后在hello包底下创建一个新类:helloworld.java,和一个新的j2me midlet:helloworldmidlet.java。代码如下:
hello.helloworld.java
以下是引用片段: |
hello.helloworldmidlet.java
以下是引用片段: |
程序的功能就是在一个alert中输出“helloworld”的字符串,代码十分简单,在此不做过多论述。编译后,可以运行程序,如果运行后能在alert中看到“helloworld”,说明程序运行正常。接着开始写测试代码。
编写测试类
写测试文件时需要用到j2meunit的类库,首先需要将类库加入到工程的build path中。右击工程名->properties->java build path->libraries, add external jars,选择刚才下载的文件,然后确定。
现在需要对helloworld.java中的sayhello()方法进行测试。在工程目录底下新建一个包名test,然后新建一个名为testhelloworld.java的类,主要对helloworld中的sayhello()方法进行测试。虽然j2meunit现在不支持反射机制,但是仍然按照junit的规范命名,以便日后的代码移植。testhelloworld代码如下所示:
testhelloworld.java
以下是引用片段: |
首先测试类必须从j2meunit.framework.testcase继承。只是对helloworld类从测试,因此包含一个helloworld的对象。接着,重载了两个构造函数。同样,重写了testcase的两个方法:setup()和teardown()。在setup()中对hello进行了初始化。由于j2meunit不支持反射机制,因此我们必须自己写suite(),创建一个testsuite的对象,然后加入要进行的测试方法。最后就是写测试sayhello()的方法,我们对sayhello()的返回值进行测试,看与预期结果是否匹配。
这是一个测试helloworld的类,我们还要写一个testall的类要运行测试过程。在test包下创建一个新类,取名testall,同样,也是继承自j2meunit.framework.testcase,代码如下:
testall.java
以下是引用片段: |
其中的main()方法是运行j2meunit的runner的,注意,其中的runnerargs,是包含了各个测试类的名称的字符串数组,并且类名一定要带上完整的包名,否则运行会失败。
运行测试
好了,现在可以运行我们的测试了。右击testall,run as..->java application。运行结束,可以在console窗口中看到如下输出:
以下是引用片段: |
因为我们在测试时,希望得到的结果是“hello world!”,而实际返回结果是“hello world”,所以会得到一个failure。现在把“hello world!”改成“hello world”,再次运行,则会输出测试通过。try it!
总结
这就是在j2me平台上使用j2meunit进行单元测试的简单过程,更多的使用和api请参见j2meunit的文档。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器