如何在使用Espresso运行活动测试时调用onCreate应用程序类

时间:2016-09-07 13:45:49

标签: android android-espresso

在我的Android应用中,我有一个Application类,扩展了MultiDexApplication。我们称之为MyApplicationClassonCreate()的{​​{1}}中,我设置了一些静态变量。然后在所有活动的MyApplicationClass.java方法中,我使用静态方法获取这些变量。

onCreate()

现在使用Espresso框架,我正在使用以下代码编写活动的UI测试

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;
  }
}

从Android Studio运行测试后,调用public class MyActivityTest{ @Rule public ActivityTestRule activityTestRule = new ActivityTestRule(MyActivity.class); @Test public void testButtonIsVisible() { //Some Test code. } } onCreate()方法并尝试获取静态变量。但是这些变量的值是null。原因很简单。 MyActivity的{​​{1}}在此过程中未被调用。

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

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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并花了很多时间,直到我意识到我们使用自定义的TestRunner并且使用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);
}
相关问题