Java ME下的单元测试开发之JMUnit篇

摘要 不能因为Java Micro Edition缺乏反射能力就说Java Micro Edition开发者无法利用JUnit风格测试的优点。其实,借助于具有JUnit风格的其它一些框架和工具,Java ME开发人员仍然能够改进Java ME应用程序的开发质量。本系列文章(两篇)正是想详细探讨J2MEUnit和JMUnit这两个开源框架在Java ME单元测试开发中的应用。

一、引言

如今,JUnit测试正在逐渐成为大多数Java标准版(SE)和企业版(EE)应用程序开发中的基本组成部分-对于那些积极拥护测试驱动开发者尤其如此。Kent Beck和Eric Gamma的最初的Smalltalk框架变得如此流行和成功,以至于它被移植到很多编程语言中,包括Ada(AUnit)、C#(NUnit)、Python(PyUnit),甚至还有Fortran(fUnit)。实践证明,Java的JUnit是所有的单元测试框架中最成功的并且已经派生出许多JUnit"变种"(以各种"扩展"的形式),这些框架最终帮助在从多线程Java应用程序到高级企业Java应用程序的主流开发中实现单元测试。

然而,使用JUnit或找到一种JUnit扩展用于Java Micro Edition开发一直以来却是很难的事情。须知,JUnit框架依赖于Java反射API。由于Java ME环境中还不支持反射API,所以,典型的很大程度上依赖于反射的JUnit工具还不能帮助进行Java ME开发。尽管如此,已经出现两个专门针对设备应用程序开发者构建的Java ME JUnit扩展。值得注意的是,随着NetBeans和NetBeans Mobility 5.5的发行,NetBeans和NetBeans Mobility Pack正在计划合并一个Java ME JUnit风格的框架。这种新版本的IDE将以一种更为利索的方式在你的Java ME应用程序中加入单元测试。

本文将通过使用Java ME JUnit框架向你介绍JUnit测试;通过本文,你会发现,如何获取这些工具,如何使用它们进行测试以及如何使用它们来构建质量更好的软件。

二、获取Java ME单元测试框架

如今,市场上存在两个可用的JavaME JUnit测试框架,它们是J2MEUnit和JMUnit。这两个工程都是可自由下载的开源框架,你可以从SourceForge.net上下载一个打包文件。

然而,这两个开源工程的工程主管(Elmar Sonnenschein和Brunno Silva,分别维护J2MEUnit和JMUnit),正在计划把这两个框架合并为一个。新的工程将在J2MEUnit工程基础上得到进一步巩固。根据Sonnenschein本人的说法,"因为更多的现有用户的工程都是基于SourceForge上的J2MEUnit框架;所以,我们计划基于Brunno的JMUnit 2.0创建一个J2MEUnit 2.0发行版本。"Silva在一次最近的新闻发布会上声称在今年年底可能无法完成产品的合并和一个2.0版本的发行。Silva进一步建议说,新的工程"不想破坏这两个框架的当前用户的原有代码,因此,原始代码会继续存在,只是不再建议使用。新的单元框架应该展现出两个框架-JMUnit和J2MEUnit-各自的特色。"

三、一个简单的示例应用程序

在分析各种单元测试框架之前,你需要一些简单的代码以备测试之用。在这个例子中,下面这个简单的Conversion类能够用于创建并测试Java ME单元测试。

public class DistanceConversion {
 public static int feetToMeters(int ft){
  return (ft * 3048)/10000;
 }
 public static int metersToFeet(int meters){
  return (meters*3281)/1000;
 }
 public static int milesToKM(int miles){
  return (miles*1609)/1000;
 }
 public static int kmToMiles(int km){
  return (km*6214)/10000;
 }
}
public class TemperatureConversion {
 public static float fahrenheitToCelsius (float degrees){
  return ((degrees-32)/9)*5;
 }
 public static float celsiusToFahrenheit (float degrees){
  return ((degrees * 9)/5)+32;
 }
 public static boolean isHotter (float degFaren, float degCel){
  return ((fahrenheitToCelsius(degFaren))-degCel) > 0;
 }
 public static boolean isCooler (float degFaren, float degCel){
  return ((fahrenheitToCelsius(degFaren))-degCel) < 0;
 }
}

时间: 2024-11-18 15:56:37

Java ME下的单元测试开发之JMUnit篇的相关文章

Android Studio开发之 JNI 篇的简单示例

前言 Android上层应用使用java开发,不过java并不适合密集型运算,比如图片处理等,遇到密集型运算,一般使用c/c++完成. Java虚拟机支持调用c/c++代码,即JNI(Java Native Interface),它提供了若干的API实现了Java和其他语言的通信.为方便android平台上使用JNI技术,提供了NDK开发包,可以将NDK理解为对JNI的进一步封装,方便开发使用罢了. JNI开发方式有多种,可以在Android 源码中开发,也可以利用其它工具,但都比较烦琐或者要下

Android程序开发之Listview下拉刷新上拉(滑动分页)加载更多_Android

最近做的类似于微博的项目中,有个Android功能要使用到listview的向下拉刷新来刷新最新消息,向上拉刷新(滑动分页)来加载更多. 新浪微博就是使用这种方式的典型. 当用户从网络上读取微博的时候,如果一下子全部加载用户未读的微博这将耗费比较长的时间,造成不好的用户体验,同时一屏的内容也不足以显示如此多的内容.这时候,我们就需要用到另一个功能,那就是listview的分页了,其实这个分页可以做成客户端的分页,也可以做成服务器端的分页(点击加载时,从服务器对应的加载第N页就好了!!!).通过分

新浪云计算公开课第5期:拥抱Java应用开发之美

如今,在PHP成为互联网最流行的网页语言之后,Java也逐渐成为了企业开发的首选语言,众多的IT组织使用Java来做大型企业项目.在全球云计算和移动互联网的产业环境下,Java具备了显著的优势和广阔的发展前景.6月30日举办的第5期新浪云计算公开课正是抓住了这一主题,业内众多技术精英汇聚一堂,共论"Java应用开发之美". 根据TIOBE世界编程语言的排行统计,Java已连续数年居于首位,俗话说,冰冻三尺非一日之寒,Java技术具有的卓越通用性.高效性.平台移植性和安全性,使得开发人员

Android程序开发之Listview下拉刷新上拉(滑动分页)加载更多

最近做的类似于微博的项目中,有个Android功能要使用到listview的向下拉刷新来刷新最新消息,向上拉刷新(滑动分页)来加载更多. 新浪微博就是使用这种方式的典型. 当用户从网络上读取微博的时候,如果一下子全部加载用户未读的微博这将耗费比较长的时间,造成不好的用户体验,同时一屏的内容也不足以显示如此多的内容.这时候,我们就需要用到另一个功能,那就是listview的分页了,其实这个分页可以做成客户端的分页,也可以做成服务器端的分页(点击加载时,从服务器对应的加载第N页就好了!!!).通过分

iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码_IOS

废话不多说了,直接给大家贴代码了. 具体代码如下所示: #import "ViewController.h" #import "TuanGouModel.h" #import "TuanGouTableViewCell.h" #define kDeviceWidth [UIScreen mainScreen].bounds.size.width #define kDeviceHeight [UIScreen mainScreen].bounds.

ios开发之Swfit使用自定义的UIRefreshControl下拉刷新界面

默认 UIRefreshControl 下拉刷新界面是一个菊花进度条+一段描述文字,略显单调.其实我们可以使用自己创建的界面视图,方便我们实现各种效果.比如添加个动态图片,添加个动画效果什么的.   1,下面演示如何使用自定义的下拉刷新界面,效果图如下:   (1)随着下拉,界面透明度从0开始慢慢显示出来     开发之Swfit使用自定义的UIRefreshControl下拉刷新界面-uirefreshcontrol下拉">         (2)开始刷新时,文字会有跑马灯效果(字体逐个

《Android程序设计》一第2章-2.0 Android开发之Java

第2章-2.0Android开发之Java必备基础本书并不是要教授Java编程,因此本章的内容只是帮助你理解在Android开发中Java的特殊使用方式.以下人士应当仔细阅读本章的内容:已经学习了Java但还没有切身经历过实际的编程困境的学生:在其他移动平台上一直使用其他版本的Java进行移动开发的程序员,需要重新学习在Android平台上进行开发时所要用到的开发语言的某些特性:对Android平台上的特定规范和需求还不了解的普通Java程序员.

Java Web开发之MD5加密用法分析_JSP编程

本文实例讲述了Java Web开发之MD5加密用法.分享给大家供大家参考.具体如下: MD5是Message Digest 5的缩写,是一种加密算法,能够对字节数组进行加密,有如下特点: ① 不能根据加密后的信息找加密之前的信息: ② 加密后的结果是128位: ③ 对于给定的字节数组,不管什么时候采用这种加密算法,结果是相同的: ④ 对于不同的字节数组,加密的结果是不相同的. 在Web应用中通常需要对用户设置的密码进行加密之后再存储,否则数据库管理员能够看到明文的密码,并且密码也有被黑客获取的危

Java开发之Spring连接数据库方法实例分析_java

本文实例讲述了Java开发之Spring连接数据库方法.分享给大家供大家参考,具体如下: 接口: package cn.com.service; import java.util.List; import cn.com.bean.PersonBean; public interface PersonService { //保存 public void save(PersonBean person); //更新 public void update(PersonBean person); //获取