Google 在他们的文档中讨论了如何使用 ActivityScenarios 及其函数
moveToState
手动转换被测 Activity 的状态。但是无论我做什么,当我到达我的单元测试代码开始执行的位置时,我的 Activity 已经处于 RESUMED 状态。不管我是直接用ActivityScenario
,ActivityScenarioRule
还是新的kotlin扩展launchActivity
我在
@RunWith(AndroidJUnit4::class)
文件夹中使用 /test
作为单元测试运行测试,而不是 /androidTest
不像他们的对手
launchFragment
,launchActivity
没有我可以设置的参数initialState
。
如果我唯一可以移动到的状态是 DESTROYED,
moveToState
的意义何在?我需要在onCreate
之后但在onStart
之前连接东西!
参考:https://developer.android.com/guide/components/activities/testing
我需要在
之后但在onCreate
之前连接东西!onStart
如果这正是您想要的,请尝试使用 Hilt 进行依赖项注入, 并将单元测试中的实例绑定替换为
@TestInstallIn
,并使用@SetUp
块中的存根实例做任何你想做的事情。
注意:此时您仍然无法访问处于
CREATED
状态的Activity实例。
参见:https://developer.android.com/training/dependency-injection/hilt-testing#replace-binding
在使用 Hilt 之前,我也在努力在单元测试中重新替换数据源,希望这能有所帮助。