为了测试我的Android-App,我正在使用UI-Testing工具Robotium。由于可传递的lib-project依赖关系以及android构建工具无法处理它们,我已经在构建项目和运行测试方面遇到了很多问题。
请在我的案例中介绍我之前的question解决问题以及相应的discussion解决方案。
现在,经过一段时间后,我已经包含了另一个图书馆项目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文件中应用修复程序,我会得到与我的另一个问题相同的错误...
提前感谢您的帮助!