2

我对 J2ME 比较陌生,并且即将开始我的第一个严肃项目。我的测试经验也不是很深。我正在寻找 J2ME 的单元测试框架。

到目前为止,我已经看到了 J2MEUnit,但我现在不知道它的支持程度如何。我见过 JavaTest Harness,但我不知道这是否是矫枉过正。

请告诉我您建议的框架:
* 实施测试的简单性
* 支持的社区和工具
* 与应用程序认证过程的兼容性
* 与 IDE(Eclipse、NetBeans)的集成
* 您认为重要的其他方面......

谢谢,阿萨夫。

4

5 回答 5

5

这是一家制作游戏的西班牙公司的博客条目。比较了很多框架,结论是(翻译过来的):

  • MoMEUnit 提供有关测试的非常有用的信息。易于移植且与 Ant 兼容。一个缺点(或者可能没有),它需要每个测试类都有一个独特的测试方法,使用大量的继承。

  • JMEUnit。(J2MEUnit 和 JMUnit 的未来合并) JMUnit 不支持 Ant,但接口类似于 MoMEUnit。J2MEUnit 没有为测试提供非常有用的信息。两种框架中的测试创建都有些复杂。J2MEUnit 确实支持 Ant;这就是为什么两个框架的合并会非常有趣(他们已经在 int 上工作了一年多或少)

我的经验:我使用过 J2ME 单元,并且由于 J2ME 中缺少“反射”而设置测试装置很痛苦,但它们总是以相同的方式构建,因此模板可以节省大量时间。我打算这周试用 MoME Unit,只是为了检查它更简单的模型

J2ME 的一些测试单元框架:

于 2008-09-22T12:31:40.933 回答
5

也看看 MockME。

www.mockme.org

来自他们的网站:“MockME 是 Java SE 的 Java ME 模拟对象。MockME 让您无需在手机上运行它们即可编写真正的单元测试。您甚至可以使用动态模拟对象框架,例如 EasyMock,它使您能够模拟任何对象Java ME! MockME 集成了同类最佳的单元测试工具,包括 JUnit、EasyMock 和 DDSteps。通过使 Java ME API 可模拟,您可以按照您真正想要的方式为您的 Java ME 应用程序编写单元测试。

于 2008-09-23T10:37:33.290 回答
2

J2SE 上的 MicroEmulator + JUnit

我开始使用 JMUnit 之类的工具,但最近我切换到 J2SE 上的标准 JUnit + MicroEmulator。这类似于使用 MockME,但使用的是 MicroEmulator。我更喜欢 MicroEmulator,因为它具有组件的实际实现,并且您可以在其上运行整个 MIDlet。不过,我自己从未使用过 MockME。

我所有的非 GUI 单元测试都是通过简单地使用 MicroEmulator 作为库来运行的。这样做的好处是所有 JUnit 工具都可以无缝工作,特别是 Ant、Maven、大多数 IDE 和持续集成工具。由于它在 J2SE 上运行,因此您还可以使用泛型和 JUnit 注释等功能,这使得编写单元测试变得更好一些。

像 RecordStore 这样的一些组件在工作之前需要一些设置。这是通过 MIDletBridge.setMicroEmulator() 完成的。

使用 MicroEmulator 的另一个好处是可以自定义一些组件的实现,例如 RecordStore。我使用内存中的 RecordStore,它在每次测试之前重新创建,所以我确定测试独立运行。

真实设备

上述方法不会在任何真实设备上运行。但是,在我看来,只有 GUI 和验收测试需要在真实设备上运行。为此,像mVNCT-Plan Robot这样的工具可以在 Symbian 设备上使用(感谢这篇博文)。但是,我只能让 mVNC 通过蓝牙工作,而且速度很慢。

另一种方法可能是使用诺基亚论坛远程设备访问 (RDA) 之类的服务。我仍然需要调查这样的平台是否适合自动化测试。

于 2010-06-06T18:51:09.130 回答
0

嗯...我自己还没有开发过移动应用程序,但我认为 J2MEUnit 是更好的选择,因为它基于原始的 JUnit,它有一个很大的社区并且得到大多数 IDE 的支持,所以它应该很容易运行至少那些测试它不直接依赖于 IDE 中的移动硬件。

更重要的可能是 J2MEUnit 与 ANT 集成,因此您可以在每次构建时运行您的测试。

于 2008-09-22T11:29:11.223 回答
0

我发现的相关文档(发布问题后)是Testing Wireless Java Applications。它在文档结尾处描述了 J2MEUnit。

于 2008-09-22T13:43:03.213 回答