我有一个 Android 应用程序需要身份验证才能使用。随着项目的发展,我想在我的应用程序中添加单元测试。
为此,我使用 Espresso 2.1
事情是:
- 我的
LoginActivity
由startActivityForResult
调用 - 显示表格
- 一个。如果凭据错误,它会保留在
LoginActivity
上
- 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)?
这是我的问题:
- 有没有办法测试
Activity
的setResult
? - 是否有解决方法(我不想使用它们中的任何一个,但至少......)能够对其进行测试?
我读过有关 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/