我正在寻找可以与BlackBerry应用程序一起使用的code coverage工具。我正在使用J2ME-Unit进行单元测试,我希望看到我的测试涵盖了多少代码。
我尝试过使用Cobertura for J2ME但经过几天的摔跤后,我没有从中得到任何结果。 (我相信RAPC编译没有完成仪器)。尽管this message,该项目似乎已经死了。
我看过JInjector,但项目似乎非常不完整。几乎没有(如果有的话)文档,虽然声明能够使用BlackBerry项目,但我还没有看到已经用于此目的的任何地方。我玩了很多项目,但没有用。
我也尝试过在BlackBerry JDE中使用“Coverage”视图,即使我使用Eclipse进行开发。无论单击“刷新”并从JDE运行应用程序,视图都将永久保持空白。
我查看了most of the tools on this SO thread,但它们不适用于J2ME / BlackBerry项目。
有没有人在BlackBerry上使用任何代码覆盖率工具取得任何成功?如果有,您使用了哪些工具?你是如何使用它们的?
如果有任何 设法让JInjector或Cobertura for J2ME与BlackBerry项目合作,那么你需要做些什么才能让它工作?
答案 0 :(得分:2)
我不能代表Coberatura或JInjector,因为我不知道他们如何收集测试覆盖探测数据。
是什么 关键是如何捕获这些数据(它是否需要仅在标准Java VM中提供的Java运行时支持?)以及如何将其导出到测试覆盖率显示/报告生成工具。
我们的SD Java Test Coverage工具会检测您的源代码;在运行时,它会生成一个表示覆盖数据的本机Java布尔数组,而无需任何特殊的VM支持。通常,当应用程序退出时,此数组将直接导出到测试覆盖率显示机制使用的文件,以及随测试覆盖率工具提供的TCVDump方法。
嵌入式系统中的Java(以及其他使用的编程语言)通常需要自定义方法来提取测试覆盖率数据。您可能需要编写一个特殊的转储过程(在Java中)以将该布尔数组写出到可访问的位置。我们构建这种自定义转储程序的经验是它们通常非常简单(几十行);真正的诀窍是决定如何/在何处放置数据,以便可以轻松地将其移动到目标文件。大多数情况下,这只是一组特殊的副本,第一个副本将布尔数组复制到某个分段位置,第二个副本将分阶段数据写入目标文件。 (标准的TCVdump方法以源代码形式提供,以实现这种自定义)。
虽然我没有专门看过黑莓手机,但如果你可以在任何地方写数据,你几乎可以放心,你可以做到这一点。我们在其他嵌入式手持系统(如Symbian)上取得了成功。
如果您想详细了解如何根据此策略为测试覆盖率设置代码,请参阅此文章:Branch Coverage for Arbitrary Languages Made Easy
答案 1 :(得分:0)
我在谷歌工作期间积极参与JInjector。我们能够使用它成功获得Blackberry应用程序的代码覆盖率。 Balckberry应用程序的应用程序生命周期比J2ME更难以预测,我们发现必须调整应用程序代码以确保收集覆盖数据。我没有亲自为黑莓应用程序工作,其他几位工程师也做过。我希望我们能够在jinjector网站上创建一个黑莓应用程序示例并将其提供,但事件和生活会受到阻碍。
如果您愿意提供样本黑莓应用程序并进行一些单元测试,我愿意花几个小时来帮助您获得代码覆盖率。我没有积极地使用J2ME或Blackberry(当我有时间尝试移动时,我正在研究Android应用程序)所以我很生疏。我有一个不涉及太多移动测试自动化的日常工作,但我继续研究如何改进移动应用程序的测试自动化,例如适用于Android Test Automation的http://code.google.com/p/mwta/downloads/list。
我是gmail.com的julianharty