我知道有很多关于Android代码覆盖率的问题(我在此之前已经做了一些研究),但我仍然陷入某些困难,所以如果你能提供帮助,我会非常感激。 我现在正在做的不是单元测试而是活动测试来验证视图(检查它们是否为空,检查按钮是否可点击,计算一个活动中的视图数量),然后我实现一些代码来测试每个活动的公共方法,我想知道这些测试的代码覆盖率。首先我尝试EclEmma,但似乎他们不支持android,所以我转向Emma。然后我在互联网上遇到了许多人的常见错误:
[exec] android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests:INSTRUMENTATION_RESULT: shortMsg=java.lang.IllegalAccessError
[exec] INSTRUMENTATION_RESULT: longMsg=java.lang.IllegalAccessError: Classref in pre-verified class resolved to unexpected implementation
[exec] INSTRUMENTATION_CODE: 0
[echo] Setting permission to download the coverage file...
[exec] Unable to chmod /data/coverage.ec: No such file or directory
[echo] Downloading coverage file into project directory...
[exec] remote object '/data/coverage.ec' does not exist
我尝试过其他人做的很多事情,但他们无法解决我的问题。我从data / data / coverage.ec更改为sdcard / coverage.ec,现在是data / coverage.ec,它们都不起作用。我试图挂载-o remount rw / sdcard,这也不行。
还有其他方法可以解决这个问题吗?活动测试甚至可以测试吗?或者我必须换成艾玛以外的东西?
答案 0 :(得分:0)
我的不好,起初我跟着一个网站(我不记得了)将emma.jar复制到我的测试项目/ libs /中。我认为它以某种方式调用jar文件两次,因此抛出IllegalAccessError。我通过删除所有emma,emma_ant jar文件并将它们复制到/ Java / jdk / jre / lib / ext来解决这个问题。现在我的所有测试运行正常,我现在可以获得代码覆盖率。