"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 с темой, которая существует в вашем приложении.

Другие вопросы по тегам