"RuntimeException: не удалось запустить действие ... Не удалось разрешить действие для намерения" при запуске тестов пользовательского интерфейса Jetpack Compose с createComposeRule.
Запуск тестов с createComposeRule
и попадание в трассировку стека, например (нерелевантные части опущены):
java.lang.RuntimeException: Could not launch activity
at androidx.test.runner.MonitoringInstrumentation.startActivitySync(MonitoringInstrumentation.java:495)
...
Caused by: java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=my.app.package.name.here/android.app.Activity }
...
3 ответа
Вопрос OP касается использования
createComposeRule()
который не требует настраиваемого действия (он использует
ComposeActivity
под капотом).
В этом случае вам нужно включить это ниже в свой файл gradle:
debugImplementation "androidx.compose.ui:ui-test-manifest:1.0.0-beta05"
Если вы посмотрите на содержимое этого пакета, это просто
AndroidManifest.xml
с
<activity/>
запись для
androidx.activity.ComponentActivity
.
Вам нужно добавить
<activity android:name="androidx.activity.ComponentActivity" />
в ваш манифест.
Вам нужно объявить Activity
с именем android.app.Activity
в вашем AndroidManifest.xml
для тестов Compose UI, которые будут использоваться для размещения контента. Добавьте следующее в свой<application>
тег:
<activity android:name="android.app.Activity" android:theme="@style/your_app_theme_here"/>
замена your_app_theme_here
с темой, которая существует в вашем приложении.