如何使用 Instrumentation 测试来测试我的 JobService?
How do I test my JobService with an Instrumentation test?
我有一个 JobService
已正确实施并在简单情况下工作正常,但我想确保该服务在所有条件下都经过适当测试。
我想使用 Instrumentation 测试用例,这样我就可以测试从使用 getSystemService(JobScheduler.class).schedule(job)
安排作业到在我的 [=10= 中调用 onCreate
的完整流程] 和我的 onStartJob
/onStopJob
电话。
我的 JobService
有时会启动 AsyncTask
s(从而在 onStartJob
中返回 true
),有时它会 returns false
用于工作那已经完成了。我接到了 jobFinished(mJobParameters, needsReschedule)
的各种电话,我想确保它们也能正常工作。
在过去的几天里,我一直在努力让仪器测试工作,但我能想到的最好的方法是安排作业但作业永远不会离开挂起状态的测试。我尝试了 waits/background 线程的各种配置,以查看是否需要释放 UI 线程,但没有取得任何成功。
Google 似乎也没有浮出水面来正确测试该组件的完整流程,这令人惊讶,因为随着更新的 API 的发布,他们似乎是如何强迫每个人使用它的。
我见过 ,但很难用 adb
实现自动化(而且我对使用它的答案不感兴趣)。
有谁知道使用 Instrumentation 测试通过 JobScheduler 端到端测试 JobService 的方法吗?
感谢 Google 开发人员非常积极地在这里回答我的问题:https://issuetracker.google.com/issues/62543492,现在很清楚如何去做了!
他们提供的仪器测试示例设置的一部分似乎是将 运行 应用程序设置为活动状态,并且主要通过 [=23= 上的 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);
}
参见 the provided InstrumentationTestCase subclass they posted in the bug notes
我有一个 JobService
已正确实施并在简单情况下工作正常,但我想确保该服务在所有条件下都经过适当测试。
我想使用 Instrumentation 测试用例,这样我就可以测试从使用 getSystemService(JobScheduler.class).schedule(job)
安排作业到在我的 [=10= 中调用 onCreate
的完整流程] 和我的 onStartJob
/onStopJob
电话。
我的 JobService
有时会启动 AsyncTask
s(从而在 onStartJob
中返回 true
),有时它会 returns false
用于工作那已经完成了。我接到了 jobFinished(mJobParameters, needsReschedule)
的各种电话,我想确保它们也能正常工作。
在过去的几天里,我一直在努力让仪器测试工作,但我能想到的最好的方法是安排作业但作业永远不会离开挂起状态的测试。我尝试了 waits/background 线程的各种配置,以查看是否需要释放 UI 线程,但没有取得任何成功。
Google 似乎也没有浮出水面来正确测试该组件的完整流程,这令人惊讶,因为随着更新的 API 的发布,他们似乎是如何强迫每个人使用它的。
我见过 adb
实现自动化(而且我对使用它的答案不感兴趣)。
有谁知道使用 Instrumentation 测试通过 JobScheduler 端到端测试 JobService 的方法吗?
感谢 Google 开发人员非常积极地在这里回答我的问题:https://issuetracker.google.com/issues/62543492,现在很清楚如何去做了!
他们提供的仪器测试示例设置的一部分似乎是将 运行 应用程序设置为活动状态,并且主要通过 [=23= 上的 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);
}
参见 the provided InstrumentationTestCase subclass they posted in the bug notes