gpt4 book ai didi

android - Robolectric 和 Evernotes android-job 库

转载 作者:太空狗 更新时间:2023-10-29 16:11:52 26 4
gpt4 key购买 nike

我正在使用 Evernotes android-job Scheduling jobs 库,一切正常,但是,当我想运行一个与 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$2.evaluate(SandboxTestRunner.java:203)
at org.robolectric.internal.SandboxTestRunner.runChild(SandboxTestRunner.java:109)

基本上它指向我的应用程序类的第 63 行:

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

最佳答案

在将 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)

关于android - Robolectric 和 Evernotes android-job 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44889407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com