如何测试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