robotium诡异的Instrumentation run failed due to 'java.lang.ClassNo

2014-11-27

在我学习Robotium自动化测试的过程中,遇到了Instrumentation run failed due to 'java.lang.ClassNotFoundException'错误。而具体的现象就是,我在手机上安装了App,一运行测试用例就会被卸载掉,同时报这个错误。我在网上查找了一下这个错误的原因,很多都是下面的这个原因造成的:

1)首先确保你已经引入了JUnit测试框架,添加的办法是:右键点你的项目→选中“Build Path”→选中“Configure Build Path…”→在Libraries选项卡中点击“Add Library”(如下图)→ 添加JUnit4测试框架.

robotium诡异的Instrumentation <wbr>run <wbr>failed <wbr>due <wbr>to <wbr>'java.lang.ClassNo

图一, 查看library

 

2)记得在“Order and Export”选项卡中添加JUnit 4的依赖(如下图)。

robotium诡异的Instrumentation <wbr>run <wbr>failed <wbr>due <wbr>to <wbr>'java.lang.ClassNo

图二,添加junit

现在问题来了:我按上面的方法查看了一下,我的Junit4引用正常啊,怎么还是有问题呢?于是就查看了一下AndroidManiFest.xml文件:

 robotium诡异的Instrumentation <wbr>run <wbr>failed <wbr>due <wbr>to <wbr>'java.lang.ClassNo

这个问题我查了很久,里面需要改的部分:

android:versionCode="32"

    android:versionName="3.2" >

<</SPAN>instrumentation

        android:name="android.test.InstrumentationTestRunner"

        android:targetPackage="com.subject.zhongchou" />

我都修改的正确啊?实在没有办法,就放在那先休息了一周,后来在网上下载了一下例子,是搜索新闻的例子,安装运行后完全正常。于是就在那个App上玩了很久。感觉上手后,就回来解决这个问题了,经常各方面的尝试,才发现问题出在:

<</SPAN>uses-sdk android:targetSdkVersion="19" />

这一句话我本来以为是我的Android的版本呢,后来才发现不是,于是就用aapt查看了一下我的App安装包的信息:

robotium诡异的Instrumentation <wbr>run <wbr>failed <wbr>due <wbr>to <wbr>'java.lang.ClassNo

                                      图三,查看版本号

    这上面显示的信息才是sdkVersiontargetSdkVersion的号,而不是我们开发测试用例的时候使用的Android的版本啊。于是就把上面的那一行代码改成:

<</SPAN>uses-sdk android:targetSdkVersion="17" android:minSdkVersion="14" android:maxSdkVersion="17"/>

然后保存,再次运行测试用例即可!要保持这个版本号和被测试的App版本号相同,这样就不会出现这个错误了。

----夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。
原文地址:https://www.cnblogs.com/eagleking0318/p/6520943.html