由于java.lang.NoClassDefFoundError导致的自动Android-UI测试失败

时间:2012-06-15 10:11:08

标签: android ant robotium android-library ui-testing

为了测试我的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文件中应用修复程序,我会得到与我的另一个问题相同的错误...

提前感谢您的帮助!

0 个答案:

没有答案