我有一个使用Espresso的Android测试项目,我正在尝试使用Ant构建。我可以很好地构建测试应用程序。将其安装到设备和所有设备上。问题是,每当我尝试使用
运行测试时adb shell am instrument -w com.test.package / com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner
我在命令提示符下得到了这个:
INSTRUMENTATION_RESULT: shortMsg=java.lang.ClassNotFoundException
INSTRUMENTATION_RESULT: longMsg=java.lang.ClassNotFoundException: Didn't find class "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" on path: /system/framework/com.google.android.maps.jar:/system/framework/android.test.runner.jar:/data/app/test.apk:/data/app/myApp.apk
INSTRUMENTATION_CODE: 0
这在logcat中:
E / AndroidRuntime(27558):java.lang.RuntimeException:无法执行 实例化仪器 ComponentInfo {com.avai.app.test.automate / com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner}: java.lang.ClassNotFoundException:没找到类 " com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 在路径上: /system/framework/com.google.android.maps.jar:/system/framework/android.test.runner.jar:/data/app/test.apk:/data/app/myApp.apk
如果我选中Configure Build Path->Order and Export
下我的Espresso jar旁边的复选框,我可以在Eclipse中运行测试。我注意到,如果未选中此框,我会收到与上面完全相同的错误消息。
我需要知道的是如何使用Ant模拟Eclipse的行为?
以下是我的build.xml文件的片段(主要是从Eclipse中的Export->Ant build files
生成的:
<path id="Android 4.4.2.libraryclasspath">
... (lots of jars) ...
</path>
<path id="AutomationTests.classpath">
... (more jars) ...
</path>
<path id="AutomationTests.classpath">
<pathelement location="bin/classes"/>
<path refid="Android 4.4.2.libraryclasspath"/>
<path refid="Android Private Libraries.libraryclasspath"/>
<path refid="Android Dependencies.libraryclasspath"/>
<pathelement location="../../android-test-kit/bin/espresso-standalone/espresso-1.1-bundled.jar"/>
</path>
<javac encoding="${java.encoding}" source="${java.source}"
target="${java.target}"
debug="true" extdirs="" includeantruntime="false"
destdir="${out.classes.absolute.dir}"
bootclasspathref="project.target.class.path"
classpathref="project.javac.classpath">
...(stuff) ...
</javac>
答案 0 :(得分:1)
您看到的错误是由第三方jar未打包在APK中引起的。 android ant build的默认行为是,只有在application project / libs文件夹中找到的jar被打包到apk中。 将espresso-1.1-bundled.jar复制到应用项目的/ libs文件夹中,您就可以了。
需要考虑的另一件事 - 您最好使用Android工具生成build.xml,如下所述:http://developer.android.com/tools/projects/projects-cmdline.html#UpdatingAProject