我有一个名为myApplication的Application的子类,我有一个方法来设置crashlytics。但是在我的单元测试中,每次运行测试时都会重新启动一个新的应用程序,然后它会尝试再次设置crashlytics,然后最终我只是出现内存异常。我如何强制一个方法只执行一次,因为它在Application中是应用程序的基础。
我的子类,如有必要,看起来像这样:
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());
}
}
答案 0 :(得分:0)
我假设您正在运行检测测试,这取决于您在Application子类中应用的配置。
虽然测试应该在尽可能接近生产的环境中运行,但是您可以通过公开MyApplication.setIsTestEnvironment()
方法并使用该标志来启用/禁用第三方依赖项来区分测试环境
或者,某些测试库(即 Mockito )允许您完全或部分模拟对象。您可以这样做,以防止您的真正的Application类在测试时初始化不需要的依赖项。