Robolectric 和印象笔记 android-作业库
Robolectric and Evernotes android-job library
我正在使用 Evernotes android-job 库进行 计划作业 并且一切正常但是,当我想 运行 一个测试用例 运行 Robolecteric 我得到这个错误:
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.evaluate(SandboxTestRunner.java:203)
at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:109)
基本上它指向我的应用程序的第 63 行 class :
JobManager.create(getApplicationContext()).addJobCreator(new JobMaker());
将 Evernote 库更新到 1.1.11 后 运行 遇到同样的问题
您可以将 JobManager 的初始化包装在一个 try catch 中并吞下异常,但更好的解决方案是创建您的应用程序的测试版本 class 并将其加载到您的测试中。
描述了这些步骤here。
将应用程序的第 63 行 class 移动到一个方法 - 称为 setUpJobManager() 之类的方法 - 并在你的 onCreate 中调用它。然后在您的应用程序 class 的测试版本中覆盖该方法。
public class TestApplication extends AppController implements TestLifecycleApplication {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void createJobManager() {
}
然后将 TestApplication class 传递给您的 robolectric 测试。只需确保正确注释 Robolectric 测试 classes 即可使用测试应用程序 class。
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23, application = TestApplication.class)
我正在使用 Evernotes android-job 库进行 计划作业 并且一切正常但是,当我想 运行 一个测试用例 运行 Robolecteric 我得到这个错误:
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.evaluate(SandboxTestRunner.java:203)
at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:109)
基本上它指向我的应用程序的第 63 行 class :
JobManager.create(getApplicationContext()).addJobCreator(new JobMaker());
将 Evernote 库更新到 1.1.11 后 运行 遇到同样的问题
您可以将 JobManager 的初始化包装在一个 try catch 中并吞下异常,但更好的解决方案是创建您的应用程序的测试版本 class 并将其加载到您的测试中。
描述了这些步骤here。
将应用程序的第 63 行 class 移动到一个方法 - 称为 setUpJobManager() 之类的方法 - 并在你的 onCreate 中调用它。然后在您的应用程序 class 的测试版本中覆盖该方法。
public class TestApplication extends AppController implements TestLifecycleApplication {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void createJobManager() {
}
然后将 TestApplication class 传递给您的 robolectric 测试。只需确保正确注释 Robolectric 测试 classes 即可使用测试应用程序 class。
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23, application = TestApplication.class)