Android - 使用Robot的Robotium使用Eclipse进行UI自动化

时间:2011-07-13 23:10:22

标签: android robotium

我正在尝试使用AndroidRobotium项目运行我的UI测试,但每当我尝试从命令行或Eclipse运行它时,它都会给我这个错误:

INSTRUMENTATION_RESULT: longMsg=java.lang.IllegalAccessError: 
    Class ref in pre-verified class resolved to unexpected implementation

在logcat中它还给出了一个错误:

java.lang.NoClassDefFoundError: com.bridgepointeducation.talon.TalonModule

即使我没有com.bridgepointeducation.talon.TalonModule

有谁知道如何解决这个问题?谢谢!

3 个答案:

答案 0 :(得分:7)

当提供相同类/ jar的两个副本时,我已经看到了这个问题。例如,如果您依赖于Android项目和测试项目中的第三方库,由于某种原因它会被包含两次。

这取决于您如何构建/运行测试以确定如何解决此问题。从eclipse你可以导出android项目中的违规库,它将被放在测试项目的类路径上。在maven中,您可以将其标记为提供的范围。在ant中,我相信你不会在测试项目中本地包含它(在libs或其他方面),它会从android项目类路径中提取出来。

答案 1 :(得分:1)

我在仪器仪表中遇到了类似的问题,我得到了错误 预验证类中的类ref解析为意外实现

在挣扎之后,我可以解决问题。问题发生的原因是android-support-v4.jar。这个jar默认是在android项目的lib文件夹中创建的。添加到lib文件夹的jar文件在编译时使用,也用于检测项目的运行时。当我运行检测时,目标应用程序开始使用捆绑在检测项目中的android-support-v4.jar而不是自己的android-support-v4.jar。这会在运行时导致预先验证的类异常(因为版本会有所不同)。

为了解决这个问题,我将android-support-v4.jar移出lib文件夹并将其放在另一个文件夹(比如libforcompile)中并将其添加为外部Jar(项目属性 - > Java BUild Path - &gt ;库 - >单击Add External Jars)。

我的仪器项目编译得很好,当它运行时它使用了目标应用程序本身的android-support-v4.jar

没有更多错误..

我希望它有所帮助

此致 Indraneel

答案 2 :(得分:0)

听起来它试图运行测试的实现类并不是它所期望的。运行测试时,必须指定测试包和包来运行测试。

您确定运行测试的程序包与类路径中包含的程序包相同吗?也许测试是针对过时的版本运行的?

此外,如果您的项目包含任何其他库(.jars),则必须确保它们也包含在测试的类路径中。

编辑:环顾四周我发现了类似的问题和解决方案: Can't build and run an android test project created using "ant create test-project" when tested project has jars in libs directory

您必须更改build.xml文件以覆盖某些默认的android目标才能包含第三方库(.jars)