使用 Robolectric 和 Dagger Hilt 启动片段时不会注入片段的属性

luk*_*jar 6 android dagger dagger-hilt

当使用RobolectricDagger 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)

并从控制台运行测试,但测试仍然失败