获取应用程序上下文():T!请明确指定,android,unit-testing,kotlin,compiler-errors,robolectric"/>

首页 > 解决方案 > 类型推断失败:没有足够的信息来推断 fun 中的参数 T获取应用程序上下文():T!请明确指定

问题描述

我正在尝试为我的 android 应用程序编写一些测试,这对我来说真的很麻烦。许多障碍之一就是这个错误

Type inference failed: Not enough information to infer parameter T in fun <T : Context!> getApplicationContext(): T! Please specify it explicitly.

发生在这条线上

val actualIntent: Intent = shadowOf(ApplicationProvider.getApplicationContext())
            .nextStartedActivity

完整的测试代码如下所示

@Test
fun clickingLogin_shouldStartLoginActivity() {
    val scenario = launch(LogInActivity::class.java)

    scenario.onActivity { activity ->
        activity.go_to_register_button.performClick()
        val expectedIntent = Intent(activity, RegistrationActivity::class.java)
        val actual: Intent = shadowOf(ApplicationProvider.getApplicationContext())
            .nextStartedActivity

        expectedIntent.component shouldBeEqualTo actual.component
    }
}

基本上 shadowOf 函数被重载并且可以返回许多想法,我需要指定类型。

我相信它应该有点像shadowOf<SomeType>(...)但我不知道实际的类型应该是什么。

任何帮助将非常感激。

编辑 我正在遵循 roboloctric指南,但尝试以 androidX 方式编写它

标签: androidunit-testingkotlincompiler-errorsrobolectric

解决方案


An是不从 扩展而来Intent的不同类型。ObjectContext

这一行:

val actualIntent: Intent = shadowOf(ApplicationProvider.getApplicationContext())

提供 aContext作为参数,并返回 a ShadowContext,而不是 a Intent

文档参考:http ://robolectric.org/javadoc/3.0/org/robolectric/Shadows.html#shadowOf-android.content.Context-

基本上它告诉你一棵树不能是一种汽车。


推荐阅读