0

我知道有很多关于 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,这也不起作用。

有没有其他方法可以解决这个问题?活动测试甚至可以测试吗?或者我必须换成艾玛以外的东西?

4

1 回答 1

0

我的错,起初我跟随一个站点(我不记得)将 emma.jar 复制到我的测试项目 /libs/ 中。我认为它以某种方式调用了 jar 文件两次,所以它抛出 IllegalAccessError 。我通过删除所有 emma、emma_ant jar 文件并将它们复制到 /Java/jdk/jre/lib/ext 来解决这个问题。现在我所有的测试都运行良好,我现在可以得到代码覆盖率。

于 2013-06-06T07:25:25.050 回答