Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android单元测试如何只运行一次方法_Android_Junit_Crashlytics - Fatal编程技术网

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

Android单元测试如何只运行一次方法,android,junit,crashlytics,Android,Junit,Crashlytics,我有一个名为myApplication的应用程序子类,其中有一个方法可以设置crashlytics。但在我的单元测试中,每次我运行一个测试时,它都会重新启动一个新的应用程序,然后每次它都会再次尝试设置crashlytics,最终我会出现内存异常。如何在应用程序的基础上强制执行一次方法,这是应用程序的基础。p> 如有必要,我的子类如下所示: public class MyApplication extends Application { @Override public void onCreat

我有一个名为myApplication的应用程序子类,其中有一个方法可以设置crashlytics。但在我的单元测试中,每次我运行一个测试时,它都会重新启动一个新的应用程序,然后每次它都会再次尝试设置crashlytics,最终我会出现内存异常。如何在应用程序的基础上强制执行一次方法,这是应用程序的基础。p> 如有必要,我的子类如下所示:

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

我假设您正在运行插装测试,这取决于您在应用程序子类中应用的配置。 尽管测试应在尽可能靠近生产环境的环境中运行,但您可以通过公开
MyApplication.setisteEnvironment()
方法和在测试时使用标志启用/禁用第三方依赖项来区分测试环境


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

这正是我最终要做的。看起来有点难看,但是谢谢