2017-07-15 2 views
2

Wie teste ich Jobs, die mit der Bibliothek Android-Job erstellt wurden? Irgendwelche Ideen zu Komponententests, instrumentierten Tests oder sogar manuellen Tests sind willkommen, ich möchte nur überprüfen, ob es wie erwartet funktioniert.Wie testen Sie die Android-Jobs von Evernote?

Um genau zu sein, ich habe einen Job, der alle N Stunden eine HTTP-Anfrage ausführt:

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

} 
+0

Haben Sie weitere Informationen gefunden? –

+0

@ DuckN'Bear nein, ich musste die Logs in den Job schreiben und sie lesen, um sicherzustellen, dass es funktioniert. –

Antwort

1

Wir bei Evernote Prüfaufgaben die folgende Art und Weise:

  • Unit-Tests -> Wir neigen dazu, Extrahieren Sie die Logik in Aktionen, ähnlich den Presentern in einem MVP-Setup. Dadurch werden Android-Abhängigkeiten entfernt und die Aktionen können einzeln getestet werden.
  • QA -> Wir haben QA-Optionen, um Jobs manuell auszulösen. Auf diese Weise kann unser QA-Team überprüfen, ob der Job die richtige Ausgabe liefert
  • Timing überprüfen -> Da verlassen wir uns auf die Protokolle.

Sie sollten auch einen Blick auf these slides werfen. ADB kann sehr hilfreich sein, um Vorhang-Annahmen zu überprüfen.

Verwandte Themen