【问题标题】:How to unit test custom Application class?如何对自定义应用程序类进行单元测试?
【发布时间】:2018-02-04 22:57:53
【问题描述】:

我想为我的自定义 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()
    }
}

【问题讨论】:

    标签: android unit-testing kotlin mockito android-testing


    【解决方案1】:

    您可以将应用程序类修改为类似于 MVP 的内容和/或单独测试应用程序类的可测试组件。

    您正在注入您的 StatLogger 并检查其上的配置。您可以获取一份正在测试的 StatLogger 的副本,然后也可以检查 Application 类之外的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多