Android 单元测试如何只 运行 一个方法一次

Android unit tests how to run a method only once

我有一个名为 myApplication 的应用程序子类,我有一个方法可以设置 crashlytics。但是在我的单元测试中,每次我 运行 测试它重新启动一个新的应用程序,然后它每次都尝试再次设置 crashlytics,然后最终我只是得到内存不足异常。我如何强制一个方法只执行一次,因为它在作为应用程序基础的应用程序中。

如果需要,我的子类如下所示:

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();
setupCrashlytics();
}


/**
 * sets up Crashlytics.
 */
private void setupCrashlytics() {

        Crashlytics.Builder crashlytics= new Crashlytics.Builder();
        Fabric.Builder fabric= new Fabric.Builder(this);


        fabricBuilder.kits(crashlytics.build());
        Fabric.with(fabric.build());
    }
}

我假设您正在 运行 进行仪器测试,这取决于您在应用程序子 class 中应用的配置。 尽管测试应该 运行 在尽可能接近生产的环境中进行,但您可以通过公开 MyApplication.setIsTestEnvironment() 方法并在 enable/disable 第三方依赖项中使用标志来区分您的测试环境你正在测试。

或者,一些测试库(即 Mockito)允许您完全或部分模拟一个对象。您可以这样做以防止您的真实应用程序 class 在测试时初始化不需要的依赖项。