目前 JavaME 单元测试的最佳工具是什么?我以前从未真正使用过单元测试(真丢脸!),所以学习曲线很重要。我会很感激你的回答有一些利弊。:)
4 回答
我认为这将取决于您打算进行什么样的测试。你会使用持续集成吗?必须在手机上运行测试。
如果测试是更多的逻辑/数据处理测试,你可以用 JUnit 做的很好。但是如果你需要使用 javax.microedition.* 中的一些类,那么事情会变得有点棘手,但并非不可能。
一些示例:屏幕上的文本换行测试,需要 javax.microedition.lcdui.Font。您不能只使用 WTK 附带的 jar 来创建字体类,因为在初始化时它将调用一些不可用的本地方法。
对于这类测试,我创建了 J2ME 的存根实现。基本上这些是我自己对 J2ME 类的解释。我可以在那里设置一些先决条件(例如每个字符都是 5 像素宽等)。而且它工作得非常好,因为我的测试只需要知道 J2ME 类如何响应,而不是它们是如何在内部实现的。
对于网络测试,我使用了 MicroEmulator 的网络实现,而且效果也很好。
单元测试的另一个问题 - 最好将您的移动项目作为使用 Java 4、5、6 的 java 项目,因为在 1.3 中编写测试至少对我来说是一种痛苦......
我相信,从 JUnit 开始会很好,可以启动并运行。如果出现其他一些要求(在手机上运行测试),那么您可以探索替代方案。
老实说,我在 Java 中使用的唯一单元测试器是JUnit和一个名为DBUnit的子项目,用于数据库测试......我假设你在 J2ME 下不需要它。
JUnit 很容易用于单元测试,只要您的 IDE 支持它(Eclipse 内置了对 JUnit 的支持)。您只需使用 @Test 注释标记测试(我认为是 org.junit.Test)。您还可以指定应该运行@Before
或@After
每个测试的方法,以及在整个类之前或之后(使用@BeforeClass
and @AfterClass
)。
不过,我从未在 J2ME 下使用过 JUnit……我在工作中使用 J2EE。
有一个名为 J2MEUnit 的框架,您可以尝试一下,但它看起来不像仍在积极开发中: