2010-05-03 98 views
3

我正在寻找一个我可以在BlackBerry应用程序中使用的code coverage工具。我正在使用J2ME-Unit进行单元测试,我想看看我的测试覆盖了多少代码。BlackBerry的代码覆盖工具

我试过使用Cobertura for J2ME但经过几天的摔跤后,我没有得到任何结果。 (我相信RAPC编写的工具没有完成)。尽管this message,该项目似乎已经死亡。

我看过JInjector但该项目似乎很不完整。几乎没有(如果有的话)文档,虽然它要求能够与BlackBerry项目一起工作,但我还没有看到已将用于该目的的任何地方。我已经玩过这个项目,但是没有用。

我也尝试了BlackBerry JDE中的“Coverage”视图,即使我使用Eclipse进行开发。无论点击“刷新”并从JDE运行应用程序,视图都保持空白。

我看过most of the tools on this SO thread,但它们不适用于J2ME/BlackBerry项目。

有没有人在BlackBerry上的任何代码覆盖工具的成功?如果是这样,你使用了什么工具?你是如何使用它们的?

如果有人设法让J2In能够与JInjector或Cobertura一起使用BlackBerry项目,那么为了使它工作,您需要做些什么?

回答

2

我不能说Coberatura或JInjector,因为我不知道他们如何收集测试覆盖率探测数据。

什么是 关键是如何捕获这些数据(是否需要仅在标准Java VM中提供Java运行时支持?)以及如何将其导出到测试覆盖率显示/报告生成工具。

我们SD Java Test Coverage工具仪器您的源代码;在运行时,这会生成一组代表覆盖数据的本地Java布尔值,而不需要任何特殊的VM支持。通常,在您的应用程序退出时,此数组将直接导出到测试覆盖率显示机制使用的文件中,该文件由随测试覆盖率工具提供的TCVDump方法导出。

嵌入式系统中的Java(以及其他使用的编程语言)通常需要自定义方法来提取测试覆盖率数据。您可能需要编写一个特殊的转储过程(使用Java)来将该布尔数组写出到可访问的位置。我们建立这样的自定义转储程序的经验是它们通常很简单(几十行);真正的诀窍是决定如何/在哪里放置数据,以便它可以轻松移动到目标文件。大多数情况下,这只是一对特殊副本,其中第一个副本将布尔数组复制到某个分段位置,第二个将暂存数据写入目标文件。 (标准TCVdump方法以源代码形式提供以实现这种定制)。

虽然我没有专门看黑莓,但是如果你可以在任何地方写数据,你几乎可以放心,你可以做到这一点。我们已经与其他嵌入式手持设备系统(如Symbian)取得了成功,这样做。

如果你想如何为一般测试覆盖率仪器代码以下这一战略的完整概述,请参阅本文:Branch Coverage for Arbitrary Languages Made Easy

0

我积极地参与了JInjector在谷歌工作时。我们能够使用它来成功获取黑莓应用程序的代码覆盖率。 Balckberry应用程序的应用程序生命周期比J2ME更难预测,我们发现我们必须调整应用程序代码以确保收集覆盖率数据。我没有亲自在黑莓应用程序上工作,其他几个工程师也一样。我希望我们能够创建一个黑莓应用程序示例,并将它放在注射器网站上,但是事件和生活就这样陷入了困境。

如果您愿意提供带有单元测试的示例黑莓应用程序,我愿意花几个小时尝试帮助您获得代码覆盖率。我没有积极地使用J2ME或Blackberry(当我有时间尝试使用移动设备时,我目前正在开发Android应用程序),所以我很生疏。我有一份不涉及太多移动测试自动化的日常工作,但是我继续努力改进移动应用的测试自动化,例如http://code.google.com/p/mwta/downloads/list适用于Android测试自动化。

我是julianharty在gmail.com

+0

感谢朱利安,但这对我来说现在大多无关紧要;自从我切换项目以来(尽管我在这里工作的BlackBerry应用程序取得了巨大的成功)。 ;-) – Skrud 2011-03-08 06:09:36