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 在测试时初始化不需要的依赖项。
我有一个名为 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 在测试时初始化不需要的依赖项。