我在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");
}
}
答案 0 :(得分:4)
经过太多的工作和努力,我很尴尬地报告问题在于测试功能的命名。如果函数以'test_'开头,则automator会找到测试。如果它不以'test_'开头,则忽略它们。
尔加!