Android单元测试如何只运行一次方法
我有一个名为myApplication的应用程序子类,其中有一个方法可以设置crashlytics。但在我的单元测试中,每次我运行一个测试时,它都会重新启动一个新的应用程序,然后每次它都会再次尝试设置crashlytics,最终我会出现内存异常。如何在应用程序的基础上强制执行一次方法,这是应用程序的基础。p> 如有必要,我的子类如下所示:Android单元测试如何只运行一次方法,android,junit,crashlytics,Android,Junit,Crashlytics,我有一个名为myApplication的应用程序子类,其中有一个方法可以设置crashlytics。但在我的单元测试中,每次我运行一个测试时,它都会重新启动一个新的应用程序,然后每次它都会再次尝试设置crashlytics,最终我会出现内存异常。如何在应用程序的基础上强制执行一次方法,这是应用程序的基础。p> 如有必要,我的子类如下所示: public class MyApplication extends Application { @Override public void onCreat
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)允许您完全或部分模拟对象。您可以这样做,以防止真正的应用程序类在测试时初始化不需要的依赖项。这正是我最终要做的。看起来有点难看,但是谢谢