【发布时间】:2017-05-29 11:46:33
【问题描述】:
我想在创建活动之前获取对它的引用,以便注入一些模拟。
所以我的活动测试规则如下:
ActivityTestRule mActivityRule = new ActivityTestRule<MainActivity>(MainActivity,class, true, false)
我知道 ActivityTestRule 有一个 beforeActivityLaunched 回调,但在那里我无法获得对我的活动的任何引用(那里为 null)。
如果我这样做:
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule(
MainActivity.class) {
@Override
protected void beforeActivityLaunched() {
super.beforeActivityLaunched();
MainActivity act = (MainActivity)getActivity();
//Here act is null
我也无法在我的测试类的 setUp 方法中获得对我的活动的引用。仅当我执行 rule.launchActivity() 时,Activity 引用才准备就绪,但随后执行了 Activity,并且我之前无法传递任何依赖项。我知道我可以为此使用匕首,但我想在这种情况下避免使用它。有没有什么方法可以在启动之前不使用 dagger 来准备 Activity 依赖项?
【问题讨论】:
-
这是一个很好的问题,因为在使用 Espresso 空闲资源时,正是需要这种模式,这些资源由活动获取和释放,但 IdlingRegistry register() 和 unregister() 由活动规则。在我的例子中,Activity 生命周期方法与 Idling Resource 交互(条件是资源不为空),我希望在生命周期转换之前设置资源。最后我不得不重新设计 Activity 以适应测试模型......
标签: android testing android-espresso android-testing