android - Android:Roboelectic 测试从 Application.onCreate 引发错误
问题描述
当尝试开始我的一项测试时,Robolectric 抛出一个错误,说我的自定义变量之一Application Class
未初始化 ( kotlin.UninitializedPropertyAccessException: lateinit property workerList has not been initialized
)。这可能是因为我的 lateinit 属性workerList
稍后将使用 dagger-hilt 进行初始化。
应用类
@HiltAndroidApp
@InternalCoroutinesApi
class App : Application(), Configuration.Provider {
@Inject lateinit var workerFactory: HiltWorkerFactory
@Inject lateinit var workerList: WorkerList // this causes the problem
override fun onCreate() {
super.onCreate()
plantTimberTree()
workerList.startDownloadDocumentWork() // this causes the problem
}
override fun getWorkManagerConfiguration(): Configuration =
Configuration.Builder().setWorkerFactory(workerFactory).build()
}
删除workerList.startDownloadDocumentWork()
时,我所有的测试用例都会再次工作。如何在不删除的情况下解决问题workerList.startDownloadDocumentWork()
?
堆栈跟踪
kotlin.UninitializedPropertyAccessException: lateinit property workerList has not been initialized
at com.example.app.App.onCreate(App.kt:21)
at org.robolectric.android.internal.AndroidTestEnvironment.lambda$installAndCreateApplication$0(AndroidTestEnvironment.java:288)
at org.robolectric.util.PerfStatsCollector.measure(PerfStatsCollector.java:75)
at org.robolectric.android.internal.AndroidTestEnvironment.installAndCreateApplication(AndroidTestEnvironment.java:288)
at org.robolectric.android.internal.AndroidTestEnvironment.setUpApplicationState(AndroidTestEnvironment.java:171)
at org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:319)
at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:254)
at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:89)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
解决方案
推荐阅读
- javascript - 链接 jquery 循环以做出反应,什么都不显示,没有错误
- google-apps-script - 尝试创建一个脚本,如果他们回答错误,则在表单提交时向提交者发送一封电子邮件
- r - 有没有办法手动调整猿/植物工具中系统发育的颜色渐变边界?
- ios - SwiftUI - 使 Picker 默认值成为占位符
- bash - 在 Bash 中分配变量时如何替换“eval”
- python - Python Logging - 创建一个日志文件,列出在 For 循环中引发错误的文件
- mysql - 仅过滤画面中的字母值
- ruby-on-rails - Rails 中的implicit_order_column 和default_scope 有什么区别?
- android - notifyDataSetChanged 不更新视图
- javascript - 我想将变量数组存储为 $_SESSION 变量