2017-07-03 15 views
1

私はスケジュールジョブためEvernotesandroid-jobライブラリを使用していますし、すべては私がRobolectericで実行されているテストケースを実行する場合、私はこのエラーを取得し、正常に動作しますが:RobolectricとEvernotesアンドロイド・ジョブ・ライブラリー

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) 
関連する問題