收集Android程序测试代码覆盖率
代码覆盖率的作用主要是用来查看测试用例执行完毕后,有哪些代码尚未覆盖到,未覆盖到的代码通常意味着未覆盖到的功能或场景,对于Andriod程序来说,好像国内聊到这个领域的文章不多,这里记录下来供大家参考。 因为Andriod程序实际上就是Java程序,这里先不谈Andriod native C程序的代码覆盖率收集(后面的文章会讲到,其实就是用gcov做的),Java程序的代码覆盖率统计可以使用一个开源软件Emma,Emma并不需要源码就可以统计代码覆盖率 。这是因为统计代码覆盖率的做法有两种(参看以前的文章:): 1、修改程序源代码,添加统计代码覆盖率的代码,例如gcov采用的就是这种做法。 2、修改最终程序,比如Emma就是修改Java class的字节码Oolong代码。为了能够将统计到的代码覆盖率结果追溯到源代码,一般是将Java编译成调试(Debug)版,做法是:Emma在每个Oolong跳转代码前加入统计覆盖率的代码,而调试版的class,里面会有.source, .line. .var这些指令,告诉调试器字节码与Java源代码、Java变量与Oolong变量的数字引用的映射关...
