为了测试我的 Android 应用程序,我正在使用 UI 测试工具Robotium。由于传递的 lib-project 依赖项和 android 构建工具无法处理它们,我已经在构建项目和运行测试方面遇到了许多问题。
请在我的案例中进行介绍,阅读我之前对问题提出的问题以及对解决方案的相应讨论。
现在,经过一段时间后,我已经包含了另一个库项目ViewPagerIndicator,我的库项目B依赖于它。因此,我再次被迫应用上面链接中提供的以前的解决方案,以防止 lib-projects 出现该错误,并且我在测试项目的 ant.properties 中添加了以下代码:
android.library.reference.1=../lib-project
android.library.reference.2=../Android-ViewPagerIndicator/library
library.paths=com/mydomain/project/* com/actionbarsherlock/**
正如我所料,构建工作。但是实际上依赖于新库的活动测试用例没有通过,我遇到了java.IllegalAccessError:
test:
[echo] Running tests...
[exec]
[exec] com.mydomain.project.projectb.test.unittests.EncodeTest:.
[exec] com.mydomain.project.projectb.test.testcases.ServerCommTest:........
[exec] com.mydomain.project.projectb.test.testcases.LoginTest:
[exec] INSTRUMENTATION_RESULT: shortMsg=java.lang.IllegalAccessError
[exec] INSTRUMENTATION_RESULT: longMsg=java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
[exec] INSTRUMENTATION_CODE: 0
然后我意识到,ViewPagerIndicator 依赖于 Android-Support-v4 包,所以我把它的 jar 放在 test-projects libs 目录中,然后再试一次。这次我遇到了活动类的 java.lang.NoClassDefFoundError :
test:
[echo] Running tests...
[exec]
[exec] com.mydomain.project.projectb.test.unittests.EncodeTest:.
[exec] junit.framework.TestSuite$1:
[exec] Failure in warning:
[exec] junit.framework.AssertionFailedError: Exception in constructor: testCreateAlbum (java.lang.NoClassDefFoundError: com.mydomain.project.activity.LoginActivity
[exec] at com.mydomain.project.test.testcases.ServerCommTest.<init>(ServerCommTest.java:29)
...
这里可能是什么问题?如果我根本不应用 ant.properties 文件中的修复程序,我会得到与另一个问题相同的错误...
提前感谢您的帮助!