【问题标题】:espresso test: how to control the content of an intent?espresso 测试:如何控制意图的内容?
【发布时间】:2020-11-28 06:01:52
【问题描述】:

我的活动类中有以下代码:

@Override
public boolean onClick(View v)
{
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri uri = Uri.parse(getExternalFilesDir(null)).getAbsolutePath();
    intent.setDataAndType(uri, "resource/folder");

    if (intent.resolveActivityInfo(getPackageManager(), 0) != null)
    {
        // case 1: another app exists
        startActivity(intent);
    }
    else
    {
        // case 2: no app, so open dialog
        DialogFragment dialog = new MyDialogFragment();
        dialog.show(this.getSupportFragmentManager(), "tag");
    }
    return true;
}

在我的 Espresso 测试中,如何在同一台设备上测试这两种情况(无需卸载/重新安装其他应用)? 我查看了 Espresso Intents 和 Mockito,但还没有找到方法。

【问题讨论】:

  • // case 1: another app exists 是什么意思?什么是另一个应用程序,没有应用程序和有应用程序有什么区别?
  • 案例1:在设备上发现了一个“文件浏览器”应用,我们将其打开。案例2:设备上没有找到文件资源管理器,所以我们显示一个对话框要求用户安装文件资源管理器

标签: android android-intent mocking mockito android-espresso


【解决方案1】:

由于您在这里有这行代码: intent.resolveActivityInfo(getPackageManager(), 0)

您可以在运行测试之前尝试以编程方式将其设置为不为空。

【讨论】:

  • 这正是我想要做的,但我不知道该怎么做。从我的测试代码中,如何模拟这个调用并返回 null?
猜你喜欢
  • 2015-11-06
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
相关资源
最近更新 更多