返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何理解J2ME单元测试理念
  • 865
分享到

如何理解J2ME单元测试理念

2024-04-02 19:04:59 865人浏览 泡泡鱼
摘要

这期内容当中小编将会给大家带来有关如何理解J2ME单元测试理念,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。J2ME Unit是由KentBeck和ErichGamma设

这期内容当中小编将会给大家带来有关如何理解J2ME单元测试理念,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

J2ME Unit是由KentBeck和ErichGamma设计开发的在J2ME平台上模仿JUnit的单元测试框架,大小17KB。它的运用为编写有保证的J2ME程序代码提供了基础性的支持。

J2ME单元测试(JUnit)

J2ME Unit简介:

利用JUnit等单元测试框架进行单元测试对于Java程序员并不陌生,利用这些非常有效的工具,使得代码的质量得到有效的监控和维护。然而似乎一切在J2ME的平台上,都显得略有些不同。由于J2ME环境不能提供反射(Reflection)api,因此很多基于反射的功能都无法使用,例如JUnit中自动创建并运行testsuite的功能。广大的J2ME程序员不能在J2ME平台上使用JUNIT进行单元测试,但谁都知道没有单元测试的程序是多么的脆弱!

J2ME Unit是由KentBeck和ErichGamma设计开发的在J2ME平台上模仿JUnit的单元测试框架,大小17KB。它的运用为编写有保证的J2ME程序代码提供了基础性的支持。J2MEUnit引入了一些新的机制来解决原有JUnit对反射的依赖。可能在使用中J2MEUnit明显的没有JUnit方便,但现阶段我们也只能利用它了,热烈的期盼着J2ME环境对反射的支持。现有的J2MEUnit的版本是1.1.1。如同JUnit一样,它也是开源的。你可以在sf.net上找到他的下载。相比较JUnit经常升级,J2MEUnit有一段时间没有升级了,一方面投入的力量较小,另外可能是考虑到J2ME环境的特殊性,要保证测试的LIB足够的小。

搭建测试平台:

我们以Eclipse配合EclipseME为例子说明如何使用J2MEUnit。

首先到sf下载J2MEUnit的***版本:Http://J2MEUnit.sourceforge.net,并解压缩到你的常用目录中。

新建一个MidletSuite,选择Project…>properties…>JavaBuildPath…>Libraries…>AddExternaljars…选择你需好下载的路径中的J2MEUnit.jar。 
 
这样就可以使用了。

编写测试类:

让我们编写一个TestCase来学习如何使用这套工具。

编写TestCase类

编写测试的类要继承J2MEUnit.framework.TestCase。如同JUnit中一样,你可以覆写setUp()和tearDown()方法,虽然这里没有反射机制,但还是推荐你把测试方法以test开头。这样一但J2ME有了反射机制,你也可以快速的移植。还有一点要注意的是,你需要为子类提供一个构造函数(假设你的类叫做TestOne): 

publicTestOne(StringsTestName,TestMethodrTestMethod)  {  super(sTestName,rTestMethod);  }

稍候解释这是为什么?

接下来编写两个个测试方法,这很熟悉:

publicvoidtestOne()  {  System.out.println("TestOne.testOne()");  assertTrue("Shouldbetrue",false);  }  publicvoidtestTwo()  {  System.out.println("TestOne.testTwo()");  thrownewRuntimeException("Exception");  }

正是缺少反射机制,你需要手动编写suite方法,并一一调用你编写的测试方法,这个步骤多多少少有些烦闷。没办法了,这是理解J2MEUnit框架的关键了,咱连writeoncedebuganywhere都忍了,还有什么困难不能克服呢?

suite方法要求我们返回一个TestSuite对象,因此,首先建立一个新的TestSuite对象并调用addTest方法,为他添加Test对象。Test是一个接口,TestSuite、TestCase都实现了他,因此既可以添加测试单元、又可以添加一个测试套件。

根据J2MEUnit的设计思想,一个TestCase在运行时,只能捆绑一个TestMethod对象。TestMethod是一个标准的回调接口,只含有一个回调run(TestCasetc)方法。这个run方法的任务是调用一个,注意,是一个测试方法,那么一旦这个方法出现问题,可以很好的捕捉它,并返回给用户。TestMethod提供了一组set方法用于捆绑一个TestMethod对象,但实际我们不去使用它,因为效率太低了,为了更快捷的捆绑TestMethod对象,我们要利用构造函数和匿名类来捆绑TestMethod类的实例。这个匿名类很好编写,只要将传入的TestCasetc向上转型到你的TestCase子类,然后调用相关方法就可。我们不得不同时提供一个String作为名称给我们的构造函数

看一下下面这个例子,希望能帮助你理解上面那段总觉得有些拗口的话。如果你理解了“一个TestCase在运行时,只能捆绑一个TestMethod对象”这句话,那么就理解了J2MEUnit所谓的新机制。千万不要在一个TestMethod中连续调用多个test方法,这样一旦某个方法出了问题,那么整个方法会结束而后续的测试将不能执行。一定要老老实实做人,认认真真写suite(),似乎又回到了剪刀加浆糊的时代。

publicTestsuite()  {  TestSuiteaSuite=newTestSuite();  aSuite.addTest(newTestOne("testOne",newTestMethod()  {publicvoidrun(TestCasetc){((TestOne)tc).testOne();  }}));  aSuite.addTest(newTestOne("testTwo",newTestMethod()  {publicvoidrun(TestCasetc){((TestOne)tc).testTwo();  }}));  returnaSuite;  }

编写测试套件

接下来编写一个测试套件,其实你可能已经明白了,测试套件不过是一个特殊的TestCase,根据惯例,一般这样的类叫做TestAll,只需要将以前添加的TestCase中的suite添加给TestAll的suite就可以了。

publicclassTestAllextendsTestCase{  publicTestsuite()  { TestSuitesuite=newTestSuite();  suite.addTest(newTestOne().suite());  suite.addTest(newTestTwo().suite());  returnsuite;  }}

调试:

有两个方法运行我们的测试。

使用textui

利用textui,这个大家都熟悉了,不做重点介绍。一般习惯上在TestAll方法中添加一个main方法:

  publicstaticvoidmain(String[]args)  {  String[]runnerArgs=newString[]{"J2MEUnit.examples.TestAll"};  J2MEUnit.textui.TestRunner.main(runnerArgs);  }

要为TestRunner.main传入一个String数组,里面罗列所有要测试的TestCase的完整路径,因为我们编写了TestAll,所以只传入他就可以了。

使用midletui

这才是这套框架迷人的地方,正是有了他我们可以在真机上进行UnitTest了,cool,这将节省多少的测试成本呀。所以之前所有的编写suite的工作就认了!

继承J2MEUnit.midletui.TestRunner,这是一个midlet父类。在startApp中调用如下方法:

protectedvoidstartApp()  {  start(newString[]{"J2MEUnit.examples.TestAll"});  }

或者,更为灵活的,你可以在jad文件中编写一个J2MEUnitTestClasses属性,写入你要测试的若干个TestCase,这样也可以进行测试而不更改主类。

如下是在模拟上的结果:

  screen.width-460)this.width=screen.width-460">

在我的MIDP1.0,真机上运行这个例子得到同样的结果,用时401ms。如果你正在使用j2me开发项目,建议把单元测试引入到你的工作当中,正如我们看到单元测试对于别的java平台的影响一样,对于嵌入式开发,它也是大有用武之地的。

上述就是小编为大家分享的如何理解J2ME单元测试理念了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: 如何理解J2ME单元测试理念

本文链接: https://lsjlt.com/news/87114.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解J2ME单元测试理念
    这期内容当中小编将会给大家带来有关如何理解J2ME单元测试理念,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。J2ME Unit是由KentBeck和ErichGamma设...
    99+
    2024-04-02
  • 如何理解J2ME PIM的概念
    这篇文章将为大家详细讲解有关如何理解J2ME PIM的概念,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。这里和大家分享一下J2ME PIM的概念,根据JSR...
    99+
    2024-04-02
  • 如何为maven单元测试设置代理
    这篇文章将为大家详细讲解有关如何为maven单元测试设置代理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。背景环境需要设置代理才能够访问外部网络,如果只是运行java程序来访问网络,我们可以...
    99+
    2023-05-31
    maven mave
  • Android单元测试的整理
      本人近实践,个人比较喜欢采用JUit+Mock+Espresso,所以也展示了这三个。本来想分篇的,后还是压缩了一下一篇吧。   文中代码大部分是以前摘录的,比较零散...
    99+
    2022-06-06
    android单元测试 测试 Android
  • C#单元测试概念是什么
    本篇内容主要讲解“C#单元测试概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#单元测试概念是什么”吧!C#单元测试应用的环境:通常而言,一个单元测试是用于判断某个特定条件(或者场景)...
    99+
    2023-06-17
  • 如何处理PHP开发中的单元测试和自动化测试
    随着软件开发行业的日益发展,单元测试和自动化测试成为了开发者们重视的环节。PHP作为一种广泛应用于Web开发的脚本语言,单元测试和自动化测试同样也在PHP开发中扮演着重要的角色。本文将介绍如何处理PHP开发中的单元测试和自动化测试,并提供一...
    99+
    2023-10-21
    自动化测试 单元测试 PHP开发
  • 如何理解Angular单元测试中事件触发的实现
    如何理解Angular单元测试中事件触发的实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。导读这篇文章主要介绍了Angular单元测试之事件触发的实现,文中通...
    99+
    2023-06-04
  • eclipse单元测试如何弄
    Eclipse提供了一些工具和插件来帮助进行单元测试。以下是在Eclipse中进行单元测试的一般步骤:1. 创建测试类:在Eclip...
    99+
    2023-08-17
    eclipse
  • PHP 单元测试:如何提高测试效率?
    通过使用快速断言、提高代码覆盖率和采用并行测试框架 paratest,可以显着优化 php 单元测试性能,从而将一个需要 30 秒执行的 laravel 测试套件优化到仅需 3 秒,性能...
    99+
    2024-05-21
    php 单元测试 laravel
  • Junit 单元测试(详解)
    Junit 单元测试 前言一、概述1. JUnit 基本概念2. JUnit 特点和用法3. 如何编写和运行单元测试 二、安装和配置 Junit三、编写和运行 Junit 测试四、运行和调试 Junit 测试五、使用 Junit...
    99+
    2023-08-21
    junit 单元测试 java
  • Android如何进行单元测试
      Menifest.xml中加入: <application>中加入: <uses-library android:name="andro...
    99+
    2022-06-06
    单元 单元测试 测试 Android
  • android单元测试如何配置
    要配置Android单元测试,您可以按照以下步骤进行操作:1. 在您的Android项目中,打开`build.gradle`文件。2...
    99+
    2023-09-26
    android
  • SpringBoot单元测试如何实现
    这篇文章将为大家详细讲解有关SpringBoot单元测试如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。demo(SpringBoot 项目)被测试类:import org.springf...
    99+
    2023-06-25
  • 如何进行C++单元测试?
    如何进行C++单元测试?C++是一种广泛使用的编程语言,常用于开发各种类型的应用程序。为了确保代码的质量和可靠性,进行单元测试是非常重要的。本文将介绍如何进行C++单元测试,以帮助开发人员更好地掌握这一技能。学习并选择合适的测试框架在进行C...
    99+
    2023-11-02
    测试框架 断言 C++ 单元测试
  • 如何在 Golang 单元测试中调试失败的测试?
    如何调试 golang 单元测试失败?查看错误消息,以了解失败原因。使用 delve 调试器逐步执行测试,检查变量值和代码流程。添加日志语句,以跟踪测试执行并获取更多信息。 如何在 G...
    99+
    2024-05-16
    golang 单元测试调试
  • C# 单元测试全解析
    目录1、前言2、单元测试2.1 单元测试的定义2.2 单元测试的好处2.3 单元测试的原则3、.NET 中的测试框架3.1 MS Test3.2 NUnit3.3 XUnit4、XU...
    99+
    2024-04-02
  • 如何理解MySQL Profile在MySQL5.7的简单测试
    本篇文章给大家分享的是有关如何理解MySQL Profile在MySQL5.7的简单测试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2024-04-02
  • phpstrom如何配置webman单元测试
    这篇文章主要介绍“phpstrom如何配置webman单元测试”,在日常操作中,相信很多人在phpstrom如何配置webman单元测试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”phpstrom如何配置w...
    99+
    2023-06-22
  • 如何进行PHP的单元测试?
    随着软件开发的不断发展,测试已经成为开发过程中不可或缺的一部分。在进行测试时,单元测试是非常重要的一种测试方式。在 PHP 中,使用单元测试可以有效地减少代码中存在的错误,提高代码质量。本文将向你介绍如何进行 PHP 的单元测试。一、什么是...
    99+
    2023-05-14
    PHP 单元测试 测试覆盖率
  • 深入理解Python单元测试unittest的使用示例
    软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施。正像软件熵(software entro...
    99+
    2022-06-04
    示例 单元测试 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作