我有一个正确实现的JobService,在简单的情况下可以正常工作,但是我希望确保在所有条件下都对服务进行适当的测试。
我想使用一个测试用例,这样我就可以测试从使用getSystemService(JobScheduler.class).schedule(job)调度作业到在我的JobService和onStartJob/onStopJob调用中调用onCreate的全部流程。
我的JobService有时会启动AsyncTask(从而在onStartJob中返回true ),而其他时候它会为已经完成的工作返回false。我给jobFinished(mJobParameters, needsReschedule)打了很多电话,我想确保它们也能正常工作。
在过去的几天里,我一直在尝试让仪器测试正常工作,但是我所能想到的最好的测试就是安排任务,但是任务永远不会离开待定状态。我尝试过不同的等待/后台线程配置,以查看释放UI线程是否是必需的,但没有取得任何成功。
谷歌似乎也没有出现任何东西来正确测试这个组件的全部流程,这是令人惊讶的,因为他们似乎在迫使每个人在发布新的API时使用它。
我见过有哪些工具可以用来测试JobScheduler?,但是很难用adb实现自动化(我对使用它的答案不感兴趣)。
是否有人知道如何使用仪器测试对JobService进行端到端测试?
发布于 2017-06-14 14:46:17
由于Google非常响应我的问题,在这里回答:https://issuetracker.google.com/issues/62543492,它现在是清楚如何做它!
他们提供的工具测试示例的部分设置似乎是将运行中的应用程序设置为active,并且主要通过测试中对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);
}https://stackoverflow.com/questions/44444310
复制相似问题