android - Espresso : test startActivityForResult return RESULT_OK

标签 android unit-testing android-espresso start-activity

我有一个 Android 应用程序需要身份验证才能使用。随着项目的发展,我想在我的应用程序中添加单元测试。

为此,我使用 Espresso 2.1

事情是:

  1. 我的 LoginActivitystartActivityForResult 调用
  2. 显示表格
  3. 一个。如果凭据错误,它会保留在 LoginActivity
  4. b。如果凭据没问题,它会结束并返回RESULT_OK

所以在我的espresso 测试课中,我有一些单元测试。 not ok 情况下一切正常,问题出在ok 情况下。

我需要检查结果是否为 RESULT_OK,但是当 Activity 完成时,espresso 失败了

android.support.test.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)?

这是我的问题:

  • 有没有办法测试 ActivitysetResult
  • 是否有解决方法(我不想使用它们中的任何一个,但至少......)能够对其进行测试?

我读过有关 Espresso-Intents 的内容但我想不出一个例子来说明如何启动我自己的包的 Activity 并检查结果是 RESULT_OK

最佳答案

非常简短的回答:

  • 是的,可以通过以下方式设置结果

    Intent resultData = new Intent();
    resultData.setData(...);
    Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK, resultData);
    intending(toPackage("package.containing.login.activity")).respondWith(result);
    

您可以通过检查其中一个 View 是否包含所需的返回信息来评估是否已收到 RESULT_OK。 如果这还不够清楚,请在评论中发表任何问题,我们会尽力提供帮助。

how I can start an activity of my own package

用户会怎么做?可能是通过单击按钮或任何其他 View 交互,对吗?

关于android - Espresso : test startActivityForResult return RESULT_OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309091/

相关文章:

android - 如何打开并读取 my/assets 目录中的文本文件?

unit-testing - 如何测试子目录中的代码?

android - 与 Dagger 一起使用时,Espresso 生成 FileNotFoundException

android - 使用 Android Espresso 框架模拟用户在系统 Activity 中的点击

android - 为什么在运行我的应用程序一段时间后出现 ConcurrentModificationException?

android - 将应用程序名称定位到 Android 应用程序的屏幕中心

java - 使用 Retrofit 和 Gson 并收到错误 : Skipped 100 frames! 应用程序可能在其主线程上做了太多工作

php - 在 Laravel 中模拟具有关系的模型

python - 模拟一个类 : Mock() or patch()?

java - 是否可以将 Mockito 中的某些返回值列入黑名单?