千家信息网

怎么使用JMUnit

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"怎么使用JMUnit"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用JMUnita
千家信息网最后更新 2026年11月01日怎么使用JMUnit

本篇内容介绍了"怎么使用JMUnit"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

使用JMUnit

a) 建立JMUnit

在下载JMUnit后,请确保相应的两个JMUnit .jar文件(JMUnit4CLDC10.jar和JMUnit4CLDC11.jar)可用于classpath中。注意,这个参数既针对你的Java ME编译器也针对运行时刻环境或IDE。当前,JMUnit的发行版本是1.0.2。

b) JMUnit测试用例

JMUnit提供了两个版本的框架(每个版本都位于各自的JAR内);一个用于CLDC 1.0应用程序,另一个用于CLDC 1.1应用程序(其中,支持浮点原型)。按照典型的JUnit惯例,使用JMUnit创建适当的单元测试的第一步是创建一个测试用例。为了在JMUnit中创建一个测试用例,你必须创建一个新的派生自JMUnit的jmunit.framework.cldc10.TestCase或jmunit.framework.cldc11.TestCase的测试用例类。正如其包名所暗示的,一个支持1.0版本的CLDC,另一个支持1.1版本的CLDC。唯一的区别是,在assertEquals()和assertNotEquals()方法(见下面)的cldc11.TestCase实现中支持Java浮点原型。

按照JUnit习惯,一个测试用例类应该包含要测试的类名,并且以"Test"结束。因此,一个测试上面这个温度转换类的简单的CLDC 1.1版本的JMUnit测试用例可以按如下方式定义:

public class TemperatureConversionTest extends jmunit.framework.cldc11.TestCase {}

所有的测试方法必须位于一个测试用例类之内。而且,按照惯例,测试方法名都以"test"开头,然后根据被测试的类中的方法进行命名。例如,一个测试fahrenheitToCelsius方法的测试用例方法应该为testfahrenheitToCelsius。每一个测试方法必须"断言"期望的结果。对于那些不熟悉JUnit测试的开发者来说,一个断言其实就是一个语句,它负责验证或证明从某个方法执行中程序员所期望的结果。JMUnit支持下列断言:


assertTrue(expression)

assertFalse(expression)

assertSame(expected,actual)

assertNotSame(expected,actual)

assertEquals(expected,actual)

assertNotEquals(expected,actual)

assertNull(object)

assertNotNull(object)

在JMUnit中,任何使用这些断言调用之一的测试方法都必须抛出一个AssertionFailedException异常。框架使用该异常来标识失败的测试。现在,这个添加了适当测试方法的TemperatureConversionTest类看起来如下所示。


import jmunit.framework.cldc11.*;

public class TemperatureConversionTest extends TestCase {

 public void testfahrenheitToCelsius() throws AssertionFailedException{

System.out.println("fahrenheitToCelsius");

float result = TemperatureConversion.fahrenheitToCelsius(66F);

assertEquals(18.88889F,result);

 }

 public void testcelsiusToFahrenheit() throws AssertionFailedException{

System.out.println("celsiusToFahrenheit");

float result = TemperatureConversion.celsiusToFahrenheit(20F);

assertEquals(68F, result);

 }

 public void testisHotter() throws AssertionFailedException {

System.out.println("isHotter");

assertTrue(TemperatureConversion.isHotter(70F,2F));

 }

 public void testisCooler() throws AssertionFailedException {

System.out.println("isCooler");

assertTrue(TemperatureConversion.isCooler(10F,10F));

 }

}

对于每一个标准的JUnit实现,JMUnit测试用例抽象类都提供了setup()和tearDown()方法,这两个方法都能够被重载并用于初始化,并在经由测试用例运行测试前后用来清除任何对象或资源。例如,在Java ME应用程序中,setup()可以用于在测试前打开一个记录存储,而tearDown()用于在测试后关闭记录存储。除了setup和tearDown方法外,还有一个fail()方法用于实现-无论assert语句显示什么内容,都允许一个测试方法返回一个测试失败。这个方法经常用于一个测试方法内的某些条件中,或用于作为未开发的单元测试的一个代理,从而作为一种方式来指示尚待完成的工作。

JMUnit中的每一个测试用例类都有一个相应的构造器。因此,派生自JMUnit的测试用例类的构造器必须调用超类构造器,并传入一个整数以指示在该测试用例中的测试个数,还要传入一个字符串来标识该测试用例。


public TemperatureConversionTest() {

 super(4,"TemperatureConversionTest");

}

这个整数指示测试的个数必须匹配测试用例中的实际测试的数目。确保你传入构造器的测试的个数匹配测试用例中的实际的测试的个数是相当重要的。当你分析该测试用例的test(int testNumber)方法,就会看到它们之间的关系。

测试用例中的这个test(int testNumber)方法负责"剔除"测试方法。因为Java ME缺乏映射能力,所以不能象在JUnit中一样,找到test方法并自动地执行之。因此,每一个测试方法必须被添加到该test方法中的一个switch语句中,并且基于一个测试号进行相应的调用。在我们的TemperatureConversionTest情况下,这个test方法看起来如下列代码所示:


public void test(int testNumber) throws Throwable {

 switch(testNumber) {

case 0:testfahrenheitToCelsius();break;

case 1:testcelsiusToFahrenheit();break;

case 2:testisHotter();break;

case 3:testisCooler();break;

default: break;

 }

}

这也正解释了为什么你必须向测试用例构造器提供一个测试号。在运行时刻,JMUnit框架创建一个测试用例类的实例。然后,框架在一个循环内调用该测试用例实例的每一个测试方法。通过这种方式,测试方法的switch语句中的每一个case语句(以及相应的每一个测试)都会被框架所调用。当把一个测试方法添加到测试用例中时,如果忘记更新测试用例类的构造器可能会导致部分测试用例不被激活。

"怎么使用JMUnit"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

测试 方法 版本 构造器 框架 语句 支持 个数 程序 两个 内容 实际 应用程序 指示 方式 应用 运行 适当 单元 原型 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云之行互联网科技 西安纸贵互联网科技有限公司 互联网电商科技 金融科技 互联网金融 鑫亿盛互联网科技 成都狮子座互联网科技 农村开互联网科技讲堂 互联网系的金融科技公司 互联网科技创新服务 崇明区互联网教育科技诚信经营 河南住房之家互联网科技 佛山市翊博互联网络科技有限公司 特约风豹互联网科技为什么扣费 中科明德北京互联网科技 互联网科技实习生岗位 互联网科技快讯热点 互联网安防科技感 本届互联网大会上的黑科技 风投北京互联网科技 求路客互联网科技电话 山东特亿宝互联网科技有限公司 科技互联网公司装修 互联网与未来科技 互联网科技排名 融贸通互联网科技 多迪互联网科技有限公司 科技与互联网的利与弊 济南华为互联网科技产业总部基地 团飞科技与伯堂互联网服务平台 半导体行业属于互联网高科技类吗
0