Skip to content

IllegalStateException: Given component holder class ComposableTestActivity does not implement interface GeneratedComponent #207

@djette-st

Description

@djette-st

Describe the bug

When using HiltAndroidRule from Dagger/Hilt 2.49+ with Testify, an IllegalStateException is thrown.

@HiltAndroidTest
class NavigationTest {

    @get:Rule(order = 0)
    var hiltRule = HiltAndroidRule(this)

    @get:Rule(order = 1)
    val rule = ComposableScreenshotRule(composeTestRule = createAndroidComposeRule(ComposableTestActivity::class.java))

    @ScreenshotInstrumentation
    @Test
    fun default() {
      rule
          .setComposeActions { composeTestRule ->
              composeTestRule.setContent {
                MainNavigation()
              }
          }
          .assertSame()
    }
}

This issue relates to:

  • Compose Extension
  • The Kotlin library
  • The Gradle plugin
  • The IntelliJ Platform plugin
  • The sample code
  • The documentation

To Reproduce

Related issue in Dagger: google/dagger#3394

java.lang.IllegalStateException: Given component holder class dev.testify.ComposableTestActivity does not implement interface dagger.hilt.internal.GeneratedComponent or interface dagger.hilt.internal.GeneratedComponentManager
	at dagger.hilt.EntryPoints.get(EntryPoints.java:62)
	at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.createInternal(HiltViewModelFactory.java:206)
	at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.createInternal(HiltViewModelFactory.java:200)
	at androidx.hilt.navigation.HiltViewModelFactory.create(HiltNavBackStackEntry.kt:77)
	at androidx.hilt.navigation.compose.HiltViewModelKt.createHiltViewModelFactory(HiltViewModel.kt:57)

Example workaround:
https://github.com/android/nowinandroid/blob/main/ui-test-hilt-manifest/src/main/kotlin/com/google/samples/apps/nowinandroid/uitesthiltmanifest/HiltComponentActivity.kt

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugAny behaviour the deviates from the documentation, expected outcome or API contract.ExtensionRelates to one of the extension libraries

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions