2016-09-07 79 views
0

在我的Android应用程序中,我有一个Application类,它扩展了MultiDexApplication。我们称之为MyApplicationClassMyApplicationClass.javaonCreate()中,我设置了一些静态变量。然后在所有活动的onCreate()方法中,我使用静态方法获取这些变量。如何在使用Espresso运行活动测试时创建应用程序类

public class MyApplicationClass extends MultiDexApplication { 

    private static String value; 

    public static void setValue(String value) { 
    MyApplicationClass.value = value; 
    } 

    public static String getValue() { 
    return MyApplicationClass.value; 
    } 
} 

现在用咖啡框架,我使用下面的代码

public class MyActivityTest{ 

    @Rule 
    public ActivityTestRule activityTestRule = 
     new ActivityTestRule(MyActivity.class); 

    @Test 
    public void testButtonIsVisible() { 
    //Some Test code. 
    } 
} 

运行于Android Studio中的测试后写一个活动UI测试,MyActivityonCreate()方法被调用和它试图让静态变量。但这些变量的值为空。原因很简单。 onCreate()MyApplicationClass.java不会在过程中被调用。

那么在启动Espresso中的活动之前,我应该如何调用onCreate()应用类的方法?

P.S.请不要关于设置和获取静态变量的建议。代码的要求。

回答

0

我有同样的问题,并花了很多时间,直到我意识到我们使用自定义TestRunner和ovveride newApplication方法。正因为如此,我们在应用程序中使用另一个类,并使用empry onCreate方法。 一旦我切换到默认的TestRunner,应用程序的onCreate按预期执行。

@Override 
@NonNull 
public Application newApplication(@NonNull ClassLoader cl, 
            @NonNull String className, 
            @NonNull Context context) 
     throws InstantiationException, 
     IllegalAccessException, 
     ClassNotFoundException { 

    return super.newApplication(cl,TestPLayerApplication.class.getName(), context); 
} 
相关问题