java - AndroidX 测试 - ActivityScenario API 立即销毁活动
问题描述
我一直在尝试将我的 Robolectic 测试用例转移到 Android X Test。我已按照文档进行操作,但无法通过 Activity Scenario Launch API 启动活动。
https://developer.android.com/reference/androidx/test/core/app/ActivityScenario
http://robolectric.org/androidx_test
protected void setupActivity() {
ActivityScenario<VisitorExemptionActivity> scenario = ActivityScenario.launch(VisitorExemptionActivity.class);
scenario.moveToState(Lifecycle.State.CREATED);// Activity destroyed before reaching to this point.
}
上面的代码没有调用除 onStart 之外的任何 android 生命周期,抛出以下异常并立即销毁活动。
java.lang.IllegalStateException:无法移动到状态“已创建”,因为 Activity 已被销毁
当我用 Robolectric 尝试相同的代码时。它工作正常并调用所有生命周期。oncreate , onstart 和 onResume 。
protected void setupActivity() {
activityController = Robolectric.buildActivity(VisitorExemptionActivity.class).setup();
activityController.get();
}
上面的代码调用了所有的生命周期。
请你能向我解释我做错了什么。
提前致谢。
解决方案
你能注释掉“scenario.moveToState(Lifecycle.State.CREATED);”吗?并尝试执行测试?
默认情况下,launch(...) 将使活动处于 RESUMED 状态,用户可以在该状态下与活动交互。
推荐阅读
- python - 网页抓取时如何继续循环
- excel - 需要根据单元格值循环复制每一行一定次数
- arrays - 有没有更好的方法来制作我制作的代码?char 数组,keylisteners
- ibm-watson - Watson Classifier curl 身份验证失败,用户 ID 和密码
- c# - 按住 Alt 键时如何防止上下文菜单关闭?
- c++ - 重载 << 运算符 c++
- python - VSCode 中的 Python:如何运行之前的命令?
- leaflet - 是否可以在传单上可视化非标准动态范围(例如天文)图像?
- apache-spark - Spark SQL忽略动态分区过滤器值
- javascript - AngularJS 如何从需要查询字符串参数和使用角度资源发布数据的 URL 获取数据?