【问题标题】:Android Unit Test Not Reporting Failing with fail()Android单元测试不报告失败失败()
【发布时间】:2013-12-17 19:42:33
【问题描述】:

我编写了一个简单地扩展 TestCase 的单元测试,我有以下内容:

public class MetricParserTests extends TestCase {

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
    }

    public void testFailure() {
        fail("This needs to fail");
    }
}

当我使用ant testadb shell am instrument 运行测试时,我得到以下结果:

... [exec] OK(1 次测试)...

我希望在命令行上看到失败。

【问题讨论】:

  • 我也有同样的问题。可以看到一行一行运行的时候抛出了AssertionFailedError,但是eclipse、ant、logcat都报测试通过了?
  • 我认为你应该问自己的问题@ChrisNoldus
  • 为什么要复制它?我们很可能遇到完全相同的问题。

标签: android unit-testing ant junit


【解决方案1】:

我相信我知道问题所在。我能够重现该问题并解决它。您使用的命令不会重建和重新安装您的测试项目到设备上。当您调用 ant test 时,它只会执行已安装在该设备上的测试。

你需要调用的是你的测试项目目录下的三个命令:

ant debug
ant installd
ant test

然后所有测试将被重建并重新安装,并且最新的测试将被执行。如果您不调用 debuginstalld,则您对测试所做的更改不会得到应用。

【讨论】:

  • 这个答案对我没有帮助 - 我看到 Gregg 已经接受了这个问题,但是阅读他的问题表明这不应该是正确的,因为他的代码只有一个测试并且正在执行。我的代码只有 5 个测试,它们都应该失败,所有 5 个测试都通过了,这清楚地表明最新的代码在设备上(更不用说我确实尝试过至少一次删除和安装)。根据 Dagon 的建议,我将根据我的具体情况重新提出这个问题。
  • @ChrisNoldus 随时打开一个新问题,详细描述您的问题,社区会尽力帮助您。
【解决方案2】:

我最近没有在 Android 测试方面的经验,但这是我发现的……

如果您的代码与 Android 完全解耦,您可以使用普通的 JUnit 测试(请参阅here 例如)。这将使用 JUnit 运行器在 您的 JVM 上运行。

但是,如果您尝试在 Android 设备上运行这些测试(通过 ant 或命令行工具),那么您需要创建一个完整的 android 测试项目(请参阅here)。 要在“设备上”进行测试,您的测试用例需要扩展 Android 测试类之一,例如 ActivityInstrumentationTestCase2<T> 并在 Android 设备上的 Dalvik VM 中使用InstrumentationTestRunner 运行。 使用 IDE 或命令行工具创建测试项目应该创建一个示例测试供您使用。

This blog post 链接自上述帖子的 cmets 是一个很好的信息来源,Android Testing Fundamentals 文档也是如此。

【讨论】:

  • 我不能代表格雷格,但这个答案对我没有帮助。我正在使用一个 Android 测试项目,并且我正在扩展一个 android 测试用例(在我的场景中,它是 ApplicationTestCase)。我确实需要在 Android 环境中进行测试,所以 JUnit 本身不会有帮助。
【解决方案3】:

方法 testFailure() 没有@Test 注解。对吗?

【讨论】:

  • 不,Android 使用 JUnit3,所以没有注释。
猜你喜欢
  • 2020-12-12
  • 2018-04-05
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2016-06-23
相关资源
最近更新 更多