如何单元测试自定义应用程序类



我想为我的自定义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的内容和/或隔离测试应用程序类的可测试组件。

您正在注入StatLogger和检查其上的配置。您可以获取正在测试的Statlogger的副本,然后还检查应用程序类的外部配置。

最新更新