欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

NetBeans Mobility Pack 和测试

程序员文章站 2022-03-03 11:52:54
...
Fabrizio Giudici说道,我最近一直在使用NetBeans Mobility Pack,我将简要介绍一下测试。

如果你创建了MIDP项目(Mobile Information Device Profile,移动信息设备描述,是一套Java应用编程接口),你发现不支持JUnit,只能使用一个变异的工具JMUnit。

有些开发者觉得使用JUnit扩展来测试Java ME项目很困难。因为JUnit框架依赖于Java反射,但是Java ME环境没有反射API。但是我反对这种观点,虽然JUnit需要反射,CLDC/MIDP没有反射,但是为什么要把你的测试必须完全在J2ME环境中运行呢?测试代码不是生产环境代码,通过设置,完全能够J2SE中运行测试。

我相信NetBeans很快会增加J2ME项目对JUnit测试的支持。

在之前,你可以用这种方式来测试:

1。比如我们有一个名为MobileMaps的MIDP库项目

2。创建一个标准的J2SE库项目,名为MobileMapsTest

3。打开这个项目的properties并且删除src目录

4。进入这个库面板,在MobileMapsTest依赖库中添加MobileMaps

5。现在在MobileMapsTest创建你的JUnit测试,你能够使用Java 5。

例如,下面是一个小的MIDP类测试

package it.tidalwave.microedition.map.osm;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

public class OSMTileSourceTest 
  {
    private OSMTileSource fixture;
    
    @Before
    public void setupFixture()
      {
        fixture = new OSMTileSource();
      }
    
    @After
    public void tearDownFixture()
      {
        fixture = null; 
      }
    
    @Test
    public void testCachePrefix()
      {
        assertEquals("OSM/", fixture.getCachePrefix());
      }
    
    @Test
    public void testDefaultZoomLevel()
      {
        assertEquals(9, fixture.getDefaultZoomLevel());
      }
    
    @Test
    public void testDisplayName()
      {
        assertEquals("OpenStreetMap", fixture.getDisplayName());
      }
    
    @Test
    public void testMaxZoomLevel()
      {
        assertEquals(17, fixture.getMaxZoomLevel());
      }
    
    @Test
    public void testMinZoomLevel()
      {
        assertEquals(1, fixture.getMinZoomLevel());
      }
    
    @Test
    public void testGetTileSize()
      {
        assertEquals(256, fixture.getTileSize());
      }
    
    @Test
    public void testMetersPerPixel()
      {
        assertEquals(39135.758482, r(fixture.metersPerPixel(17 -  2)));
        assertEquals(19567.879241, r(fixture.metersPerPixel(17 -  3)));
        assertEquals( 9783.939621, r(fixture.metersPerPixel(17 -  4)));
        assertEquals( 4891.969810, r(fixture.metersPerPixel(17 -  5)));
        assertEquals( 2445.984905, r(fixture.metersPerPixel(17 -  6)));
        assertEquals( 1222.992453, r(fixture.metersPerPixel(17 -  7)));
        assertEquals(  611.496226, r(fixture.metersPerPixel(17 -  8)));
        assertEquals(  305.748113, r(fixture.metersPerPixel(17 -  9)));
        assertEquals(  152.874057, r(fixture.metersPerPixel(17 - 10)));
        assertEquals(   76.437028, r(fixture.metersPerPixel(17 - 11)));
        assertEquals(   38.218514, r(fixture.metersPerPixel(17 - 12)));
        assertEquals(   19.109257, r(fixture.metersPerPixel(17 - 13)));
        assertEquals(    9.554629, r(fixture.metersPerPixel(17 - 14)));
        assertEquals(    4.777314, r(fixture.metersPerPixel(17 - 15)));
        assertEquals(    2.388657, r(fixture.metersPerPixel(17 - 16)));
        assertEquals(    1.194329, r(fixture.metersPerPixel(17 - 17)));
        assertEquals(    0.597164, r(fixture.metersPerPixel(17 - 18)));
      }
    
    private static double r (final double v)
      {
        final int s = 1000000;
        return Math.floor(v * s + 0.5) / s;
      }
  }