Java UIAutomator在Linux上构建时运行0个测试,但在其他平台上运行良好

Java UIAutomator在Linux上构建时运行0个测试,但在其他平台上运行良好,java,android,linux,eclipse,android-uiautomator,Java,Android,Linux,Eclipse,Android Uiautomator,在Linux中使用Android的UIAutomator库运行测试时,我遇到了一个问题。基本的设置是Nexus4,或者是带有4.2.2、JDK6、Eclipse和LinuxMint13的模拟器 这个问题的根源是: INSTRUMENTATION_STATUS: stream= Test results for WatcherResultPrinter= Time: 0.007 OK (0 tests) INSTRUMENTATION_STATUS_CODE: -1 这是我在Linux下创

在Linux中使用Android的UIAutomator库运行测试时,我遇到了一个问题。基本的设置是Nexus4,或者是带有4.2.2、JDK6、Eclipse和LinuxMint13的模拟器

这个问题的根源是:

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时,测试运行程序不能找到类,而不是platoforms?我现在最好也是唯一的猜测是编译时java路径设置不正确,因此jar文件的构建不正确。在Eclipse中运行测试时,我最初得到了“ClassNotFoundException”,而在osx/windows上,测试将在JUnit中运行,但失败了

我对此进行了深入研究,发现编译器都指向系统不同部分的不同java版本。我修复了这个问题,删除了除了一个java6jdk实例之外的所有内容,并检查了JAVA_HOME、eclipse构建路径和JAVA编译路径都指向同一个实例

在所有这些之后,测试似乎仍然在构建,但是测试运行者找不到它们。我在这里的知识已经不多了,任何帮助都将不胜感激

谢谢

编辑: jar tvf:

守则:

package com.test;

import android.util.Log;

public class FirstTest extends UiAutomatorTestCase {

    public void thisTest() throws UiObjectNotFoundException {
        getUiDevice().pressHome();
        Log.i("HELP","HELP ME");
    }

}

在做了太多的工作和努力之后,我不好意思报告问题出在测试函数的命名上。如果函数以“test_”开头,则自动机将查找测试。如果它不是以“test_”开头,它将忽略它们


在做了太多的工作和努力之后,我不好意思报告问题出在测试函数的命名上。如果函数以“test_”开头,则自动机将查找测试。如果它不是以“test_”开头,它将忽略它们


你比较过jar文件吗?一点一点地,没有-我在vi中打开它们进行比较,以确保它们至少是相似的,而且其中有一点明文,它们似乎包含正确的路径。它们的大小也差不多。有没有更好的方法来比较jar文件?是否有一种方法可以分析内容以检查其中包含的内容?您可以解压缩jar文件以了解它们包含的内容。然后,您可以使用diff(linux等上的命令行实用程序)将您解压缩的每个文件与从工作jar文件解压缩的相同文件名进行比较。你也可以发布测试用例的代码,以防测试名称出现问题,等等。你比较过jar文件吗?一点一点,没有-我在vi中打开它们进行比较,以确保它们至少是相似的,而且其中的一小部分明文似乎包含了正确的路径。它们的大小也差不多。有没有更好的方法来比较jar文件?是否有一种方法可以分析内容以检查其中包含的内容?您可以解压缩jar文件以了解它们包含的内容。然后,您可以使用diff(linux等上的命令行实用程序)将您解压缩的每个文件与从工作jar文件解压缩的相同文件名进行比较。如果测试名称有问题,你可以发布测试用例的代码,等等。在你最初的问题中,你说你的测试在Windows和OSX中工作,但如果它们是在Linux上构建的,就不会运行。根据你的回答,我猜操作系统根本不是问题所在,而且你在Linux上也有不同的源文件——这可以解释为什么你会出现报告的症状。仅供参考,你不是唯一一个在这里被考试命名搞砸的人。我希望Android测试运行程序使用反射(Java)找到哪些方法可以作为测试。我的观点可能过于简单,即测试需要确认JUnit 3规则。至少在Windows编译中,如果重命名或以其他方式大幅更改jar文件,则需要清除所选目标文件夹中的uidump.xml,否则可能会导致测试问题。在最初的问题中,您说您的测试在Windows和OSX中工作,但如果它们构建在Linux上,就不会运行。根据你的回答,我猜操作系统根本不是问题所在,而且你在Linux上也有不同的源文件——这可以解释为什么你会出现报告的症状。仅供参考,你不是唯一一个在这里被考试命名搞砸的人。我希望Android测试运行程序使用反射(Java)找到哪些方法可以作为测试。我的观点可能过于简单,即测试需要确认JUnit 3规则。至少在Windows编译中,如果重命名或实质性更改jar文件,则需要清除所选目标文件夹中的uidump.xml,否则可能会导致测试问题。
package com.test;

import android.util.Log;

public class FirstTest extends UiAutomatorTestCase {

    public void thisTest() throws UiObjectNotFoundException {
        getUiDevice().pressHome();
        Log.i("HELP","HELP ME");
    }

}