luk*_*jar 6 android dagger dagger-hilt
当使用Robolectric和Dagger Hilt启动片段时,后期初始化字段不会注入片段中。
我有以下测试:
@RunWith(RobolectricTestRunner::class)
@HiltAndroidTest
@Config(application = HiltTestApplication::class)
class SampleTest {
@Test
fun checkFragmentProperty() {
launchFragmentInHiltContainer<TestFragment> {
// nothing
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的 TestFragment 看起来像这样:
@AndroidEntryPoint
class TestFragment : Fragment() {
@Inject
lateinit var testClass: TestClass
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
testClass.some()
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此测试时,它显示错误kotlin.UninitializedPropertyAccessException: lateinit property testClass has not been initialized
我使用官方文档launchFragmentInHiltContainer中的方法,但当我只使用.lunchFragmentInContainerandroidx.fragment.app.testing
当我使用模拟器而不是 Robolectric 时,字段会被正确注入。
我尝试添加:
hilt {
enableTransformForLocalTests = true
}
Run Code Online (Sandbox Code Playgroud)
并从控制台运行测试,但测试仍然失败
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |