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类测试
如果你创建了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; } }