2017-07-03 66 views
1

我使用Evernotes Evernotes的Android作業庫android-job計劃作業,一切工作正常,但是,當我想是與Robolecteric運行運行測試用例我得到這個錯誤:Robolectric和

com.evernote.android.job.JobManagerCreateException: All APIs are disabled, cannot schedule any job 

at com.evernote.android.job.JobManager.<init>(JobManager.java:184) 
at com.evernote.android.job.JobManager.create(JobManager.java:107) 
at com.M.MyApp.MyApplication.onCreate(MyApplication.java:63) 
at org.robolectric.android.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:137) 
at org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:290) 
at org.robolectric.internal.SandboxTestRunner$2.evaluate(SandboxTestRunner.java:203) 
at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:109) 

基本上它用手一指我的應用程序類的63:

JobManager.create(getApplicationContext()).addJobCreator(new JobMaker()); 

回答

4

恰好碰到了這個相同的ISS ue將Evernote庫更新到1.1.11之後

您可以將您的JobManager初始化包裝在try catch中併吞下該異常,但更好的解決方案是創建應用程序類的測試版本並將其加載爲您的測試。

步驟描述爲here

將應用程序類的第63行移至一個方法 - 稱爲類似setUpJobManager()的方法,然後在onCreate中調用該方法。然後在您的應用程序類的測試版本中覆蓋該方法。

public class TestApplication extends AppController implements TestLifecycleApplication { 

@Override 
public void onCreate() { 
    super.onCreate(); 
} 

@Override 
public void createJobManager() { 

} 

然後將TestApplication類傳遞給您的robolectric測試。只要確保您正確註釋您的Robolectric測試類以使用測試應用程序類。

@RunWith(RobolectricTestRunner.class) 
@Config(constants = BuildConfig.class, sdk = 23, application = TestApplication.class)