2017-05-29 95 views
1

为了注入一些模拟,我想在创建之前获取对我的活动的引用。如何在仪器测试中模拟活动依赖关系

所以,我有我的活动测试规则,如:

ActivityTestRule mActivityRule = new ActivityTestRule<MainActivity>(MainActivity,class, true, false) 

我知道ActivityTestRule有beforeActivityLaunched回调,但我不能让我的活动的任何引用(为空在那里)。

所以,如果我做的:

@Rule 
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule(
     MainActivity.class) { 
    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
     MainActivity act = (MainActivity)getActivity(); 
     //Here act is null 

我不能让我在我的测试类的设置方法活动的参考要么。只有当我执行rule.launchActivity()时,活动引用才准备好,但是之后执行了Activity,并且我无法传递任何依赖关系。我知道我可以使用匕首,但我想避免这种情况。在启动之前,有没有办法在没有匕首的情况下准备活动依赖项?

+0

这是一个很好的问题的意图,因为正是这种模式使咖啡的使用时所需要的空闲由ActiveRule调用的具有IdlingRegistry注册()和unregister()的活动获取和释放的资源。在我的情况下,Activity生命周期方法与空闲资源交互(有条件的资源不为空),我希望在生命周期转换之前设置资源。最后,我不得不重新设计活动以适应测试模型...... –

回答

0

如果第二个参数(launchActivity)是ActivityTestRule假这意味着你应该自定义每个测试方法

@Test 
public void dummyTest() { 
    mActivityRule.launchActivity(new Intent()); 
// code here 
} 
相关问题