利用J2MEUnit进行单元测试

转载 2012年03月21日 16:25:13
 

这样就可以使用了。三、编写测试类

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

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

public TestOne(String sTestName, TestMethod rTestMethod)

{

super(sTestName, rTestMethod);

}

稍候解释这是为什么?

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

public void testOne()

{

System.out.println("TestOne.testOne()");

assertTrue("Should be true", false);

}

public void testTwo()

{

System.out.println("TestOne.testTwo()");

throw new RuntimeException("Exception");

}

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

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

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

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

public Test suite()

{

TestSuite aSuite = new TestSuite();

aSuite.addTest(new TestOne("testOne", new TestMethod()

{ public void run(TestCase tc) {((TestOne) tc).testOne(); } }));

aSuite.addTest(new TestOne("testTwo", new TestMethod()

{ public void run(TestCase tc) {((TestOne) tc).testTwo(); } }));

return aSuite;

}
编写测试套件

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

public class TestAll extends TestCase

{

       public Test suite()

       {

              TestSuite suite = new TestSuite();

              suite.addTest(new TestOne().suite());

              suite.addTest(new TestTwo().suite());

              return suite;

       }

}

 四、调试运行

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

 使用textui

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

public static void main(String[] args)

       {

              String[] runnerArgs = new String[] { "j2meunit.examples.TestAll" };

              j2meunit.textui.TestRunner.main(runnerArgs);

       }

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


 

 使用midletui

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

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

protected void startApp()

       {

              start(new String[] { "j2meunit.examples.TestAll" });

       }

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

  如下是在模拟上的结果:

  还是很直观的对吧。

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


在SpringMVC利用MockMvc进行单元测试

转自 http://www.cnblogs.com/wql025/p/5022395.html spring在线文档:https://docs.spring.io/spring/docs/c...
  • gn1201
  • gn1201
  • 2016年08月09日 00:24
  • 1276

IDEA中利用JUnit进行单元测试

转载来源http://blog.csdn.net/w_basketboy24/article/details/10078589 打开IntelliJ IDEA工具,Alt+Ctrl+S,弹出窗口如下...
  • shanshan_blog
  • shanshan_blog
  • 2017年03月31日 19:46
  • 896

利用JUnit4进行单元测试

利用JUnit4进行单元测试利用JUnit4进行单元测试 待测试代码 引入JUnit4包 添加JUnit Test Case 开始单元测试 初始化测试实例以及setUptearDown方法 自定义第一...
  • u012767526
  • u012767526
  • 2016年05月31日 14:57
  • 368

利用BouncCheck进行单元测试

今天下载了最新的BoundCheck V10.1试用版进行试用,感觉还是蛮好用的,至少比V6.0.1好用,该版本直接可以嵌入到VC2003及以后版本的Visual stdio中进行单元测试,VC201...
  • zerokkqq
  • zerokkqq
  • 2016年10月18日 10:22
  • 116

利用Junit4进行单元测试

junit4 进行单元测试 二.添加一个Junit4单元测试class 步骤: 1.单独创建一个packege,取名test,划分好结构 2.在所在包右键new...
  • jinzhencs
  • jinzhencs
  • 2016年01月07日 13:05
  • 318

利用spring-test+junit进行单元测试

1、引入相关的包,这里用maven进行管理的 dependency> groupId>org.springframeworkgroupId> artifactId>spring...
  • sunnyliuqi
  • sunnyliuqi
  • 2017年05月12日 17:13
  • 127

利用dbunit 进行单元测试

从数据库导出excel数据 import java.io.FileNotFoundException; import java.io.FileOutputStream; import j...
  • achuo
  • achuo
  • 2015年09月09日 16:33
  • 913

利用BouncCheck进行单元测试

利用BouncCheck进行单元测试 分类: VC/C++/C 2011-04-08 11:17 1363人阅读 评论(6) 收藏 举报 单元测试deleteapinullbyte存...
  • lionzl
  • lionzl
  • 2013年07月09日 14:25
  • 547

利用Junit进行单元测试

 测试的重要性大家都知道,但如何使测试更加准确和全面,并且独立于项目之外并且避免硬编码,JUnit给了我们一个很好的解决方案。 一、引子     首先假设有一个项目类SimpleObject...
  • happystarcat
  • happystarcat
  • 2013年11月29日 10:33
  • 745

单元测试1-为什么需要单元测试

为什么需要单元测试    软件开发的标准过程包括以下几个阶段:『需求分析阶段』→『设计阶段』→『实现阶段』→『测试阶段』→『发布』。其中测试阶段通过人工或者自动手段来运行或测试某个系统的过程,...
  • shuidingdang
  • shuidingdang
  • 2016年10月10日 11:35
  • 3069
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用J2MEUnit进行单元测试
举报原因:
原因补充:

(最多只允许输入30个字)