在 Linux 中使用适用于 Android 的 UIAutomator 库运行测试时遇到问题。基本设置是 Nexus 4,或带有 4.2.2、JDK6、Eclipse 和 Linux Mint 13 的模拟器。
这个问题的根源是:
INSTRUMENTATION_STATUS: stream=
Test results for WatcherResultPrinter=
Time: 0.007
OK (0 tests)
INSTRUMENTATION_STATUS_CODE: -1
这是我在 Linux 下创建 jar 文件时得到的。如果我在 Windows 或 OSX 中构建它,一切似乎都很顺利。在这种特定情况下,只有一个测试,即按下“主页”按钮。
如果我在任何其他环境(osx/windows)下使用相同的代码和相同的步骤创建项目,测试将按预期运行。
我的问题是 - 为什么在 Linux 下创建 jar 时,测试运行程序无法找到类,而不是在平台下?我现在最好的也是唯一的猜测是编译时java路径设置不正确,因此jar文件构建不正确。在 Eclipse 中运行测试时,我最初得到了“ClassNotFoundException”,而在 osx/windows 上,测试将在 JUnit 中运行,但失败了。
我对此进行了深入研究,发现编译器都指向系统不同部分的不同 Java 版本。我修复了这个问题,删除了除了 java6jdk 的一个实例之外的所有内容,并检查了 JAVA_HOME、eclipse 构建路径和 java 编译路径都指向同一个实例。
在这一切之后,测试似乎仍在构建,但测试运行程序找不到它们。我在这里的知识已经结束,任何帮助将不胜感激!
谢谢
编辑:jar tvf:
spicy@ubuntu:~/workspace/TestOne/bin$ jar tvf testui1.jar
0 Sun Apr 07 14:23:24 PDT 2013 META-INF/
103 Sun Apr 07 14:23:22 PDT 2013 META-INF/MANIFEST.MF
1052 Sun Apr 07 14:23:24 PDT 2013 classes.dex
编码:
package com.test;
import android.util.Log;
public class FirstTest extends UiAutomatorTestCase {
public void thisTest() throws UiObjectNotFoundException {
getUiDevice().pressHome();
Log.i("HELP","HELP ME");
}
}