当尝试更改活动中的空闲状态时,我的问题出现了——似乎在创建活动和idlingresource可用之间存在延迟。
在序列的第一个测试中,idlingresource永远不可用——因此,我无法将idlingresource的初始值设置为false,然后切换回true。这似乎是由注释生命周期引起的,如本文
据我所知,活动是由@rule创建的,然后idlingresource在@before中实例化。由于活动已经在运行,因此在我尝试更改状态的每个点上,空闲资源都为空。
在随后的测试中,只跳过setIdleState的第一个实例(发生在onCreate中),可能与@rule的活动生命周期有关?--但其他人按预期运作。
在第一次测试之前,是否有一个让@rule和@before按顺序工作的最佳实践?
我正在为我的android设置一个与示例相同的idlingresource的浓缩咖啡测试here.
我的测试设置:
@Rule
public ActivityTestRule<MainActivity> mMainActivity =
new ActivityTestRule(MainActivity.class);
private IdlingResource mIdlingResource;
@Before
public void registerIdlingResource() {
mIdlingResource = mMainActivity.getActivity().getIdlingResource();
IdlingRegistry.getInstance().register(mIdlingResource);
}
在我的活动中,每次更改空闲状态时,我都会调用:
if (mIdlingResource != null) {
mIdlingResource.setIdleState(false);
} else {
Log.d("error ", "idle resource is null");
}
当尝试更改活动中的空闲状态时,我的问题出现了——在创建活动和idlingresource可用之间似乎存在延迟。
在序列的第一个测试中,idlingresource永远不可用--因此,我不能将idlingresource的初始值设置为false,然后切换回true。这似乎是由注释生命周期引起的,如中所述this article:
据我所知,活动是由@rule创建的,然后idlingresource在@before中实例化。因为活动已经在运行,所以在我尝试更改状态的每个点上,空闲资源都是空的。
在随后的测试中,只跳过setIdleState的第一个实例(发生在onCreate中),可能与@rule的活动生命周期有关?--但其他人的行动与预期一致。
在第一次测试之前,是否有一个让@rule和@before按顺序工作的最佳实践?