尝试运行简单的Android JUnit测试,但是出现了“测试运行失败:没有测试结果”的提示。我漏掉了什么吗?

4

我以前从未使用过JUnit,现在我正在尝试在Android项目上设置它。

我的测试项目非常复杂,包括一些JNI,但我的测试工程目前完全是微不足道的。我在网上找到了很多看起来完全不同的示例来制作测试项目,但无论我遵循哪个,都会得到相同的结果。

这是我的JUnit项目代码:


package com.mycompany.myproject.test;

import android.test.AndroidTestCase;

public class SimpleTestCaseExample extends AndroidTestCase {
    public void test_testOne() {
        fail("Just Always Fail");
    }
}

当我运行时,在Logcat中看到以下内容:
stdout    INSTRUMENTATION_STATUS: numtests=2
stdout    INSTRUMENTATION_STATUS: test=test_testOne
stdout    INSTRUMENTATION_STATUS_CODE: 0
stdout    INSTRUMENTATION_STATUS: id=InstrumentationTestRunner
stdout    INSTRUMENTATION_STATUS: current=2
stdout    INSTRUMENTATION_STATUS: class=com.mycompany.myproject.test.SimpleTestCaseExample
stdout    INSTRUMENTATION_STATUS: stream=
stdout    INSTRUMENTATION_STATUS: numtests=2
stdout    INSTRUMENTATION_STATUS: test=testAndroidTestCaseSetupProperly
stdout    INSTRUMENTATION_STATUS_CODE: 1
stdout    INSTRUMENTATION_STATUS: id=InstrumentationTestRunner
stdout    INSTRUMENTATION_STATUS: current=2
stdout    INSTRUMENTATION_STATUS: class=com.mycompany.myproject.test.SimpleTestCaseExample
stdout    INSTRUMENTATION_STATUS: stream=.
stdout    INSTRUMENTATION_STATUS: numtests=2
stdout    INSTRUMENTATION_STATUS: test=testAndroidTestCaseSetupProperly
stdout    INSTRUMENTATION_STATUS_CODE: 0
stdout    INSTRUMENTATION_RESULT: stream=
stdout    Test results for InstrumentationTestRunner=..
stdout    Time: 0.07
stdout    OK (2 tests)
stdout    INSTRUMENTATION_CODE: -1
但是,在控制台中,我得到了以下内容:
在设备emulator-5554上启动android.test.InstrumentationTestRunner
收集测试信息
测试运行失败:没有测试结果
我尝试过许多不同的方法,包括调整基本的TestCase类、TestSuite类或其他各种选项。我尝试了最简单的例子,因为我还在学习如何使用它。
无论我尝试什么,都会看到这个错误。
如果您有任何建议,请告诉我,我会更新。
如果我遗漏了一些关键信息,请让我知道,我会更新。
1个回答

17

好的,我已经弄清楚了。

而且很少有人能猜出问题所在。我不确定是什么让我尝试这个。

我有一些JNI代码会将错误消息打印到stdout中。那段代码并没有在我的测试项目中运行,但是我使用了同样的仿真器。因此,我有一个/data/local.prop文件,用于将stdout重定向到logcat。

结果发现,测试工具期望从JUnit测试中获取stdout中的输出。当stdout被重定向到logcat时,stdout上就没有任何输出,测试系统也未能获得输出,从而导致其未能运行。

我删除了我的local.prop文件中将stdout重定向到logcat的设置,并重新启动了仿真器,现在它可以正常工作了。

我从来没有想过测试系统依赖于读取stdout本身。


谢谢您的回答,我从来没有想过那个。 - Display name
1
你是怎么做到的?我移除了我的local.prop重定向stdout到logcat,然后重新启动模拟器,现在它可以工作了。 - user358591

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接