(二)使用j2meunit进行游戏测试

发表于:2007-7-25 14:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络

分享:

        根据J2MEUnit的设计思想,一个TestCase在运行时,只能捆绑一个TestMethod对象。TestMethod是一个标准的回调接口,只含有一个回调run(TestCase tc)方法。这个run方法的任务是调用一个,注意,是一个测试方法,那么一旦这个方法出现问题,可以很好的捕捉它,并返回给用户。TestMethod提供了一组set方法用于捆绑一个TestMethod对象,但实际我们不去使用它,因为效率太低了,为了更快捷的捆绑TestMethod对象,我们要利用构造函数和匿名类来捆绑TestMethod类的实例。这个匿名类很好编写,只要将传入的TestCase tc向上转型到你的TestCase子类,然后调用相关方法就可。我们不得不同时提供一个String作为名称给我们的构造函数(还记得吗?我们添加的那个构造函数,这下,明白她的用处了吧)。需要什么来搜一搜吧so.bitsCN.com
  
  看一下下面这个例子,希望能帮助你理解上面那段总觉得有些拗口的话。如果你理解了“一个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{so.bitsCN.com网管资料库任你搜
  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中调用如下方法:需要什么来搜一搜吧so.bitsCN.com
  protected void startApp()
  {
  start(new String[] { "j2meunit.examples.TestAll" });
  }
  或者,更为灵活的,你可以在jad文件中编写一个J2MEUnitTestClasses属性,写入你要测试的若干个TestCase,这样也可以进行测试而不更改主类。
  
  如下是在模拟上的结果:

                          

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

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号