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

时间:2015-05-05 12:11:11

标签: android unit-testing integration-testing android-espresso

我正在使用带有ActivityTestRule的Espresso 2.1,我正在寻找一种在我的应用程序中调用onCreate()之前设置一些静态标志的方法。

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

2 个答案:

答案 0 :(得分:23)

在检测onCreate()之后调用

应用 onCreate()。在这种情况下,您需要实现一个自定义测试运行器,它将子类化AndroidJUnitRunner,并将使用您的自定义设置覆盖callApplicationOnCreate()。

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

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

testInstrumentationRunner "com.myapp.MyCustomTestRunner"

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

答案 1 :(得分:0)

我在 Kotlin 中通过在我的测试方法中添加这个来解决这个问题:

git foobar

然后在该调用之前或在您的 /bin/sh 方法中添加/更新您的变量。