如何单元测试自定义应用程序类?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何单元测试自定义应用程序类?相关的知识,希望对你有一定的参考价值。
我想为我的自定义Application
类编写一些单元测试,但是在我尝试使用此错误创建Application
对象后,我的测试立即失败:
java.lang.RuntimeException: Stub!
at android.content.Context.<init>(Context.java:20)
at android.content.ContextWrapper.<init>(ContextWrapper.java:21)
at android.app.Application.<init>(Application.java:36)
...
这是我的Application
课程:
class MainApplication : Application() {
@Inject lateinit var statLogger: StatLogger
override fun onCreate() {
super.onCreate()
inject()
setupStatLogger()
}
private fun inject() {
...
}
private fun configStatLogger() {
statLogger.config()
}
}
这是我的考验:
class MainApplicationTest {
val app = MainApplication().apply {
statLogger = mock()
}
@Test
fun `logger is configured`() {
app.onCreate()
verify(app.statLogger).config()
}
}
答案
您可以将应用程序类修改为类似于MVP和/或单独测试Application类的可测试组件。
您正在注入StatLogger并检查其上的配置。您可以获得正在测试的StatLogger的副本,然后检查Application类之外的配置。
以上是关于如何单元测试自定义应用程序类?的主要内容,如果未能解决你的问题,请参考以下文章