我有一个使用Espresso的Android测试项目,我正在尝试用Ant构建。我可以很好地构建测试应用程序。把它安装到设备上。问题是,每当我尝试使用
运行测试时adb shell am instrumentcom.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
在日志中:
E/AndroidRuntime(27558): java.lang.RuntimeException: able to实例化仪器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"路径:/系统/框架/com.google.android.maps.jar:/系统/框架/android.test.runner.jar:/数据/应用/test.apk:/数据/应用/myApp.apk
如果我选中Configure Build Path->Order and Export
下Espresso罐旁边的框,我可以在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>
您看到的错误是由于第三方jar没有打包在APK中引起的。android ant构建的默认行为是,只有在应用程序项目/lib文件夹中找到的jar才被打包到apk中。把espresso-1.1-bundle .jar拷贝到app项目的/libs文件夹中,就可以了。
另一件需要考虑的事情—您最好使用Android工具生成build.xml,如下所述:http://developer.android.com/tools/projects/projects-cmdline.html#UpdatingAProject