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

时间:2018-02-04 22:57:54

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

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

这是我的考验:

{{1}}

1 个答案:

答案 0 :(得分:0)

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

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