android - Android Jetpack WorkManager - 测试 UniquePeriodicWork 执行
问题描述
我正在使用 Android 的Jetpack WorkManager每天安排一次定期下载任务。我按照说明进行操作,并Success
在工作入队时得到回复:
val work = PeriodicWorkRequestBuilder<UpdateWorker>(1, TimeUnit.DAYS)
.setConstraints(constraints) // Internet connection, idle and battery not low
.addTag("ANNOUNCEMENTS_WORKER_TAG")
.build()
val workOperation = workManager.enqueueUniquePeriodicWork("UPDATE_WORK_TAG", ExistingPeriodicWorkPolicy.KEEP, work)
workOperation.state.observe(this, Observer { state ->
Timber.d("state: $state") // is successful
})
我现在怎么知道这真的发生了?我如何(单元)测试我的任务的重复执行?
解决方案
您实际上可以在 WorkManager 上编写仪器测试:
@RunWith(AndroidJUnit4::class)
class UpdateWorkerTest{
private lateinit var context: Context
@Before
fun setUp() {
context = ApplicationProvider.getApplicationContext()
}
@Test
fun testWorkerCall() {
val yourWorker = TestListenableWorkerBuilder<UpdateWorker>(context).build()
runBlocking {
val result = yourWorker.doWork()
assertThat(result, `is`(ListenableWorker.Result.success()))
}
}
}
我现在怎么知道这真的发生了
您必须为此信任 Google 团队,并希望您没有 One Plus 设备。
出于您自己的考虑,您可以只玩一点您的设备,也许将其关闭然后再打开,然后等到作业运行(在控制台上运行日志)等。
文档中有更多关于测试的内容
推荐阅读
- python - 如何在 f 格式中使用 string.len() 函数?
- node.js - 在节点 child_process 事件处理程序之间共享数据的“正确”方式是什么?
- c# - ASP.NET Core API 空 XML 对象
- r - 如何从 R 中的字符向量中提取独特的表情符号?
- c - 有序列表搜索算法的输出不正确
- python-3.x - 使用 numpy 在矩阵中设置交替的非对角线元素
- javascript - 数据确认应包括检查的无线电输入的名称或值
- python - 我的代码中出现 Python“回溯错误”,不确定如何解决
- python - 使用 os.listdir(path) 循环时如何跳过前几个文件?
- datetime - 如何查找一个月内登录N次以上的客户?