我知道Android的Ant工具带有内置的Emma代码覆盖,但Emma的报告看起来越来越过时,无法轻松集成到其他报告甚至Sonar中,主要是因为Emma缺乏详细的XML报告格式 . 我想要实现的是
-
单元测试的代码覆盖率(基于Robolectric,已经使用Cobertura完成)
-
集成测试的代码覆盖率(基于Robotium- / emulator,目前与Emma分开完成)
-
理想地合并代码覆盖率结果(这是恕我直言,只能与Cobertura一起使用,并且需要每次测试执行时的原始* .ser文件)
-
发布到Sonar(目前仅使用单元测试覆盖率,Sonar只了解一种覆盖格式)
我还有其他选择吗?
edit: This post on sonar-devel可能总结了Android代码覆盖支持的当前状态以及Sonar支持 . 叹
3 回答
我已经推送了一个包含你在问题中提到的相同配置的github仓库:
标准android测试emma代码覆盖率
robolectric cobertura代码覆盖率(顺便说一句,我认为cobertura与robolectric不兼容)
并将它们包含在声纳中 . 一次只有一个,但配置仍然是一个有趣的工作基础 .
https://github.com/stephanenicolas/Quality-Tools-for-Android
我和一位同事一心想要以与你一样非常相似的心态来处理这个问题 . 我们希望更好地集成不同的测试技术,以便Android项目和报告在声纳中工作 .
如果您想加入我们的努力,我们很乐意为您提供回购权并开始与您合作 .
斯特凡
自2013年3月起,我们还提出统一配置,使用Jacoco离线仪器进行robolectric和标准junit测试,并在Sonar中同时显示结果 .
您可以使用robolectric框架 . 它允许您在Java VM上运行JUnit测试,而不是使用在Dalvik VM上运行的Android Junit测试 . 这将允许您使用任何标准覆盖工具(EclEmma,CodeCover,Cobertura等) . 它易于配置和运行稳定(你不能从Clover工具中说出来) .
Disclaimer: I'm an Atlassian
是 . 还有另一种选择 - 您可以使用Atlassian Clover工具 . 有一个alpha版本的Clover-for-Android可从https://confluence.atlassian.com/display/CLOVER/Clover-for-Android获得
您写道,您想要实现以下目标:
单元测试的代码覆盖率 - 是的,Clover支持"Run as > Android JUnit Test"以及"Run as > JUnit Test" - 即没有启动模拟器(但后者需要稍微不同的设置,如Clover-for-Android手册中所述)
集成测试的代码覆盖率 - 如上所述,"Run as > Android JUnit Test"
理想情况下合并代码覆盖率结果 - 是的,您可以合并多个测试运行的代码覆盖率结果;你还能做什么甚至 run your application in emulator or device and perform manual tests (原文如此!)
发布到Sonar - 有一个Clover Sonar Plugin可用,但我没有't test it with Clover-for-Android; probably you would have to run your tests in Eclipse, next export XML or HTML report (button in Clover'的Coverage Explorer视图)并将这些文件推送到Sonar构建