如何测试Evernote的Android作业?

如何测试使用Android-Job库创建的作业?任何有关单元测试,仪器测试甚至手动测试的想法都会受到赞赏,我只是想检查它是否按预期工作。如何测试Evernote的Android作业?

具体而言,我有一个执行HTTP请求,每N小时作业:

package com.kondenko.yamblzweather.job; 

import android.support.annotation.NonNull;

import com.evernote.android.job.Job;

import com.evernote.android.job.JobRequest;

import com.kondenko.yamblzweather.model.entity.WeatherData;

import com.kondenko.yamblzweather.ui.weather.WeatherInteractor;

import com.kondenko.yamblzweather.utils.SettingsManager;

import java.util.concurrent.TimeUnit;

import javax.inject.Inject;

public class UpdateWeatherJob extends Job {

private WeatherInteractor interactor;

private String cityId;

private String units;

private long refreshRateHr;

// Do not delete, needed for job creation

public static final String TAG = "UpdateWeaterJob";

@Inject

public UpdateWeatherJob(WeatherInteractor interactor, SettingsManager settingsManager) {

this.interactor = interactor;

this.cityId = settingsManager.getSelectedCity();

this.units = settingsManager.getSelectedUnitValue();

this.refreshRateHr = settingsManager.getRefreshRate();

}

@NonNull

@Override

protected Result onRunJob(Params params) {

WeatherData data = interactor.getWeather(cityId, units).blockingGet();

return data != null ? Result.SUCCESS : Result.FAILURE;

}

public void buildJobRequest(String name) {

new JobRequest.Builder(UpdateWeatherJob.TAG)

.setPeriodic(TimeUnit.HOURS.toMillis(refreshRateHr))

.setRequiredNetworkType(JobRequest.NetworkType.CONNECTED)

.setRequirementsEnforced(true)

.setPersisted(true)

.build()

.schedule();

}

}

回答:

我们在Evernote的测试工作方式如下:

  • 单元测试 - >我们倾向于将逻辑提取到动作中,类似于MVP设置中的演示者。这消除了Android依赖关系,这些操作都是单元测试。
  • 质量保证 - >我们有QA选项来手动触发作业。通过这种方式,我们的QA团队可以验证作业是否产生正确的输出
  • 验证时机 - >我们依赖于日志。

你也应该看看these slides。亚行可以真正帮助验证帷幕假设。

以上是 如何测试Evernote的Android作业? 的全部内容, 来源链接: utcz.com/qa/263862.html

回到顶部