在 Firebase 应用程序中组合的仪器测试

Instrumentation testing in compose in a firebase app

我正在尝试在 compose 中创建测试,但我总是收到以下错误:

Default FirebaseApp is not initialized in this process X. Make sure to call FirebaseApp.initializeApp(Context) first.

我尽量简化了测试代码:

@get:Rule
val composeTestRule = createComposeRule()

@Test
fun test() {

    composeTestRule.setContent {
        Text("Whatever")
    }
}

但仍然出现该错误。

我试过 uiThreadTestRule:

@get:Rule
val composeTestRule = createComposeRule()

@get:Rule
var uiThreadTestRule: UiThreadTestRule = UiThreadTestRule()

@Test
fun test() {
    uiThreadTestRule.runOnUiThread {
        FirebaseApp.initializeApp(InstrumentationRegistry.getInstrumentation().targetContext)
    }

    composeTestRule.setContent {
        Text("Whatever")
    }
}

也有相同的composeTestRule.runOnUiThread:

@get:Rule
val composeTestRule = createComposeRule()

@Test
fun test() {
    composeTestRule.runOnUiThread {
        FirebaseApp.initializeApp(InstrumentationRegistry.getInstrumentation().targetContext)
    }

    composeTestRule.setContent {
        Text("Whatever")
    }
}

如何修复 FirebaseApp is not initialized 错误,以便测试此应用的可组合项?

更新

这似乎与 createComposeRule() 有关,导致以下测试:

@get:Rule
val composeTestRule: ComposeContentTestRule = createComposeRule()

@Test
fun test() {
    assertEquals(2, 1 + 1)
}

也失败了,如果我删除规则,它就会通过。 如果可以删除它,我不需要测试中的 firebase 依赖项。

将此添加到该模块的 gradle 文件中以排除 firebase 依赖项:

configurations {
    androidTestImplementation {
        exclude group: 'com.google.firebase', module: 'firebase-perf'
    }
}