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

时间:2020-07-30 12:02:36

标签: android dagger dagger-hilt

当使用 Robolectric Dagger Hilt 启动片段时,

Late init字段不会插入片段中。

我进行了以下测试:

@RunWith(RobolectricTestRunner::class)
@HiltAndroidTest
@Config(application = HiltTestApplication::class)
class SampleTest {

    @Test
    fun checkFragmentProperty() {
        launchFragmentInHiltContainer<TestFragment> {
            // nothing
        }
    }
}

我的TestFragment看起来像这样:

@AndroidEntryPoint
class TestFragment : Fragment() {

    @Inject
    lateinit var testClass: TestClass

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        testClass.some()
    }
}

当我尝试运行此测试时,它将显示错误kotlin.UninitializedPropertyAccessException: lateinit property testClass has not been initialized

我使用official documentation中的launchFragmentInHiltContainer方法,但是当我只使用lunchFragmentInContainer中的androidx.fragment.app.testing方法时,效果相同。

当我使用仿真器而不是Robolectric时,字段将被正确注入。

我尝试添加:

hilt {
    enableTransformForLocalTests = true
}

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

0 个答案:

没有答案