ActivityTestRule - 如何在Application的onCreate之前调用代码

smd*_*edy 13 android integration-testing unit-testing android-espresso

我正在使用带有ActivityTestRule的Espresso 2.1,我正在寻找一种方法来设置一些静态标志,然后onCreate()才会调用我的应用程序.

我有一些我不希望在仪器测试期间调用的初始化代码.

Be_*_*ive 24

应用程序 onCreate()在Instrumentation之后调用onCreate().对于这种情况,您需要实现一个自定义测试运行器,它将子类化AndroidJUnitRunner并将使用您的自定义设置覆盖callApplicationOnCreate().

public class MyCustomTestRunner extends AndroidJUnitRunner {
@Override
public void callApplicationOnCreate(Application app) {
    InstrumentationRegistry.getTargetContext().getSharedPreferences().doMyStuff();
    super.callApplicationOnCreate(app);
}
}
Run Code Online (Sandbox Code Playgroud)

确保更新build.gradle中的defaultConfig以使用新的testInstrumentationRunner,如下所示:

testInstrumentationRunner "com.myapp.MyCustomTestRunner"
Run Code Online (Sandbox Code Playgroud)

如果您希望在Activity 之前运行一些代码onCreate(),请将ActivityTestRule子类化为您自己的实现beforeActivityLaunched()

  • 是否可以仅使用此转轮进行某些测试? (7认同)