Ant(build.xml)等同于Eclipse的Build Path-> Export?

时间:2014-06-25 22:10:49

标签: java android eclipse ant android-espresso

我有一个使用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>

1 个答案:

答案 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