如何使用Instrumentation测试来测试我的JobService?

我有一个正确实施的JobService ,在简单情况下工作正常,但我想确保服务在所有情况下都得到了正确测试。

我想使用仪器测试的情况下,这样我可以测试从作业的调度全流量getSystemService(JobScheduler.class).schedule(job)到调用onCreateJobService和我onStartJob / onStopJob电话。

我的JobService有时会启动AsyncTask (因此它会在onStartJob返回true ),有时候它会返回false来完成已完成的工作。 我有jobFinished(mJobParameters, needsReschedule)各种调用,我想确保它们也能正常工作。

我一直在试着让仪器测试在过去的几天工作,但我所能想到的最好的测试是安排工作的时间,但工作永远不会离开待定状态。 我已经尝试了等待/后台线程的各种配置,以查看是否释放UI线程是需要的,但没有取得任何成功。

Google似乎也没有表现出任何东西来正确测试这个组件的完整流程,这是令人惊讶的,因为它们似乎迫使每个人都在更新的API发布时使用它。

我见过哪些工具可用于测试JobScheduler? 但使用adb自动化很困难(而且我对使用它的答案不感兴趣)。

有没有人知道使用Instrumentation测试进行端到端测试JobService的JobScheduler?


感谢Google开发者在这里回答我的问题非常敏感:https://issuetracker.google.com/issues/62543492,现在清楚如何做到这一点!

看起来,他们提供的检测测试示例的一部分设置是将运行中的应用程序设置为活动状态,并主要通过测试shell上的cmd jobscheduler <command>调用来了解作业状态

    try {
        SystemUtil.runShellCommand(getInstrumentation(), "cmd activity set-inactive "
                + mContext.getPackageName() + " false");
    } catch (IOException e) {
        Log.w("ConstraintTest", "Failed setting inactive false", e);
    }

请参阅他们在错误提示中发布的InstrumentationTestCase子类

链接地址: http://www.djcxy.com/p/96399.html

上一篇: How do I test my JobService with an Instrumentation test?

下一篇: `docker run` on a remote host