android - 类型推断失败:没有足够的信息来推断 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 方式编写它
解决方案
An是不从 扩展而来Intent
的不同类型。Object
Context
这一行:
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-
基本上它告诉你一棵树不能是一种汽车。
推荐阅读
- r - 如何在R中选择每个下个月的数据
- php - 如何在 New Relic 中查看完整查询
- java - 如何实施集成最佳实践?
- wordpress - 根据帖子链接获取帖子ID
- javascript - 比较 js 日期...是星期几?
- css - 通过 windows 命令行将 SCSS 文件批量编译成 CSS
- java - 在 Java 流的性能方面哪个更好:组合过滤器或组合环境?
- c - 在 c 程序中更改子进程的内容。
- google-cloud-platform - Google pubsub 88% 的请求以 503 的形式返回
- android - 来自 ItemTouchHelper onSwiped() 的 StartIntent