假设 Eclipse 中的 Android 项目由 2 个项目构建而成:
项目 1 是一个 Java 库,它在 Android 上编译得很好。
项目 2 是库的测试用例,本质上是扩展 AndroidTestCase
并将结果输出到 Android 控制台的类。
项目1是Java项目,项目2是依赖于项目1的Android项目。
问题描述:如果我从 Eclipse 执行测试作为 Android JUnit 测试,它们会按预期运行,没有错误。但是,如果我想通过命令行再次执行它们:
adb shell am instrument -w bla.bla/android.test.InstrumentationTestRunner
我得到了很多
Cannot load class. Make sure it is in your apk. Class name: xyz
java.lang.ClassNotFoundException: xyz
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:234)
at android.test.ClassPathPackageInfoSource.createPackageInfo
....
Caused by: java.lang.ClassNotFoundException: xyz in loader
dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/bla.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
....
logcat 中的错误。
观察:
Eclipse 安装 .apk。
稍后我执行相同的已安装的 .apk,因此可用的类必须相同。
使用 Class c = Class.forName("xyz")
动态请求类。
所以我的问题是,Eclipse 如何以不同方式执行已安装的 .apk,以便在运行时找到正确的类?
最佳答案
你确定 xyz.class 在 CLASSPATH 中吗?
我遇到了同样的问题,就是这个问题!
关于java - 从 Eclipse 执行 android 测试用例与控制台远程检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037255/