在 Android 中測驗方法enqueueUniqueWork和cancelUniqueWorkKotlin的最佳方法是什么?我只找到了使用 Id 測驗作業的答案,但我有一個唯一的名字。
uj5u.com熱心網友回復:
這兩種方法都來自WorkManager類。此類是運行時環境的一個元素,因此測驗它們是WorkManager.
您可能想要做的是測驗由這些方法執行/取消的任務或測驗它們是否被呼叫。
對于第二個選項,請查看名為 Mock 的東西。這是一個特殊的“類”,它偽裝成你原來的類,但你可以控制它的行為方式并檢查它是如何使用的。
uj5u.com熱心網友回復:
經過大量搜索,我找到了這個教程:https : //medium.com/@thefallen.class/unit-testing-workmanager-with-dependencies-8ffff7ef5476
還有 android 檔案:https : //developer.android.com/topic/libraries/architecture/workmanager/how-to/integration-testing
無法直接測驗方法enqueueUniqueWork并且cancelUniqueWork僅使用 Mocks。
我需要圖書館,如
androidx.test:coreandroidx.work:work-testingorg.robolectric:robolectric
androidx.work:work-testing 由于提供的背景關系,允許我初始化一個 Test WorkerManager androidx.test:core
@RunWith(RobolectricTestRunner::class)
class ClassTest{
private lateinit classToTest: ClassToTest
private lateinit context: Context
@Before
fun setUp(){
context = ApplicationProvider.getApplicationContext()
val config = Configuration.Builder()
.setWorkerFactory((WorkerFactory.getDefaultWorkerFactory()))
.setExecutor(SynchronousExecutor())
.setMinimumLoggingLevel(Log.DEBUG)
.build()
WorkManagerTestInitHelper.initializeTestWorkManager(context, config)
}
}
然后,我設法獲得了我獨特的排隊作業的狀態并由于諸如
WorkManager.getInstance(context).getWorkInfosForUniqueWork("name").get()[0].state
哪些回傳元素,如WorkInfo.State.CANCELLED或WorkInfo.State.ENQUEUED
如果這是最好的方法,我不是 100%,但它允許我測驗我想要的。希望它可以幫助其他人
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316789.html
下一篇:是否可以更改類介面以提高可測驗性
