【问题标题】:Writing JUnit tests for Toasts in an Android app在 Android 应用程序中为 Toast 编写 JUnit 测试
【发布时间】:2012-11-03 13:42:29
【问题描述】:

我经常使用Toast.makeText().show() 向我的 Android 应用程序的用户显示消息。这些可以是下一步要做什么的说明或错误消息。作为我的 JUnit 测试的一部分,我想包含这些消息按预期出现的断言。我该怎么做?

【问题讨论】:

  • 我无法回答您的问题,但我必须评论一下使用 Toast 获取说明或报告错误消息。 Toast 是短暂的,用户很容易错过这种类型的消息。换句话说,不要将Toast 用于对用户体验至关重要的任何事情——显示一个对话框或通知而不是......如果用户分心并且看不到您的Toast 消息,则可以使用永久性的东西。
  • @Squonk 这是一个很好的观点。我肯定会考虑更改我的 UI 以使用 Toasts 以外的其他内容。我怀疑我在尝试编写测试时会遇到类似的问题。

标签: java android unit-testing error-handling junit


【解决方案1】:

我通过使用 Robotium 框架来做到这一点,并在 toast 显示后立即调用它:

     TextView toastTextView = solo.getText(0);
     if(toastTextView != null){
         String toastText = toastTextView.getText().toString();
         assertEquals(toastText, "Your expected text here");
     }
     //wait for Toast to close
     solo.waitForDialogToClose(5000);

【讨论】:

  • Robotium 是我要学习的一长串技术清单。感谢您回答我的问题并提醒我下载并查看此测试框架。
【解决方案2】:

自从最初提出这个问题以来,我发现以下解决方案对我很有效:

public static void waitForToast(Solo solo, String message) {
    Assert.assertTrue(solo.waitForDialogToOpen(TIME_OUT));
    Assert.assertTrue(solo.searchText(message));
}

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多