我尝试为支持架构组件生命周期事件的函数添加单元测试。为了支持生命周期事件,我添加了@OnLifecycleEvent
我的函数的注释,我想在该事件发生时执行某些操作。
一切都按预期工作,但我想为该函数创建一个单元测试,以检查我的函数在预期事件发生时运行。
public class CarServiceProvider implements LifecycleObserver {
public void bindToLifeCycle(LifecycleOwner lifecycleOwner) {
lifecycleOwner.getLifecycle().addObserver(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onClear() {
Log.i("CarServiceProvider", "onClear called");
}
}
我尝试模拟 LifecycleOwner 并创建新的 LifecycleRegistery 来更改生命周期观察者的状态,但我没有这样做。
我该如何测试我的onClear()
状态改变时调用的函数?
您应该能够使用生命周期注册表 https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistry
您的测试将执行如下操作:
@Test
public void testSomething() {
LifecycleRegistry lifecycle = new LifecycleRegistry(mock(LifecycleOwner.class));
// Instantiate your class to test
CarServiceProvider carServiceProvider = new CarServiceProvider();
carServiceProvider.bindToLifeCycle(lifecycle);
// Set lifecycle state
lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
// Verify that the ON_STOP event was handled, with an assert or similar check
...
}
如果您正在测试Lifecycle.Event.ON_DESTROY那么你可能需要打电话处理LifecycleEvent(Lifecycle.Event.ON_CREATE)在此之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)