атрибут android:forceQueryable не найден в студии Android при запуске теста Espresso

Я записал свой тест эспрессо для Android-приложения, используя опцию Android Studio Record Espresso Test в меню Run. В конце записи я сохранил тест под своим именем файла.

После нажатия кнопки «Сохранить» IDE автоматически создает файл в каталоге AndroidTest модуля app. Я щелкаю правой кнопкой мыши сохраненный файл и нажимаю «Выполнить». Затем это подсказало мне следующую ошибку.

/Users/dehanwijesekara/Documents/ProjectName/app/build/intermediates/packaged_manifests/debugAndroidTest/AndroidManifest.xml:24: AAPT: error: attribute android:forceQueryable not found.

Ниже приведен файл по ссылке выше.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dehan.pizzago.test" >

<uses-sdk
    android:minSdkVersion="23"
    android:targetSdkVersion="29" />

<instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:functionalTest="false"
    android:handleProfiling="false"
    android:label="Tests for com.dehan.pizzago"
    android:targetPackage="com.dehan.pizzago" />

<queries>
    <package android:name="androidx.test.orchestrator" />
    <package android:name="androidx.test.services" />
    <package android:name="com.google.android.apps.common.testing.services" />
</queries>

<uses-permission android:name="android.permission.REORDER_TASKS" />

<application
    android:debuggable="true"
    android:extractNativeLibs="false"
    android:forceQueryable="true" >
    <uses-library android:name="android.test.runner" />

    <activity
        android:name="androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity"
        android:theme="@android:style/Theme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyActivity"
        android:theme="@android:style/Theme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyFloatingActivity"
        android:theme="@android:style/Theme.Dialog" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
</application>

Я использую Android Studio 4.1.

Пожалуйста посоветуй.


person Dehan Wjiesekara    schedule 05.11.2020    source источник
comment
Может быть связано с github.com/android/android-test/issues/743. Можете ли вы попробовать версию 1.3.1-alpha02 (или более позднюю) тестовой библиотеки AndroidX?   -  person gosr    schedule 05.11.2020
comment
Я не уверен, что это поможет. Я тоже недавно столкнулся с этой проблемой. У меня это сработало, когда я использовал androidTestImplementation 'androidx.test:rules:1.3.0-alpha03' вместо androidTestImplementation 'androidx.test:rules:1.3.1-alpha02' в своем build.gradle (приложении). ActivityTestRule устарело в новой версии.   -  person Suri    schedule 06.11.2020
comment
Уважаемый @gosr, я пробовал, не получилось. Я нашел решение и проверил его.   -  person Dehan Wjiesekara    schedule 07.11.2020
comment
Уважаемый @hypergogeta, я попробовал ваше предложение, но оно не сработало. Я нашел решение и проверил его.   -  person Dehan Wjiesekara    schedule 07.11.2020


Ответы (2)


Вот что я сделал.

В конце записи эспрессо я заметил, что Android Studio автоматически добавляет следующую библиотеку в файл Gradle build.xml уровня приложения.

androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0-alpha02'

Ниже приведены мои другие библиотеки, которые я добавил вручную в соответствии с руководством по настройке эспрессо в документе разработчиков Google Android. .

androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
androidTestImplementation 'androidx.test:runner:1.1.0'
androidTestImplementation 'androidx.test:rules:1.1.0'

Затем я обновил указанные выше библиотеки до последних версий, как показано ниже (поскольку студия Android предложила последние версии, поэтому я обновил их).

androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test:rules:1.3.0'

Затем я делаю версии espresso-contrib равными espresso-core, как показано ниже.

androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.3.0'

обратите внимание, теперь и espresso-contrib, и espresso-core имеют версию 3.3.0

Я также удалил следующие библиотеки из моего файла сборки gradle, но не проверял, что произойдет, если они останутся постоянно. потому что моя цель не тестировать, а постоянно выполнять задачу как своего рода роботизированная программа.

testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'

Наконец, это сработало, я предполагаю, что причина вышеуказанной ошибки в вопросе связана с несоответствием версии.

person Dehan Wjiesekara    schedule 07.11.2020
comment
Мне нужно сохранить библиотеки Junit, и это решение не работает. Надеюсь, это будет исправлено в следующей стабильной версии эспрессо. - person Paolo Moschini; 13.12.2020
comment
Это сработало для меня, у меня был эспрессо 3.4.0-alpha02, и после того, как я установил его на 3.3.0, ошибка исчезла. - person Codigo Morsa; 14.01.2021
comment
@CodigoMorsa Спасибо, что сообщили всем. - person Dehan Wjiesekara; 21.01.2021

В моем случае эта конфигурация работает.

androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0-alpha03'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha03'
androidTestImplementation 'androidx.test:runner:1.3.1-alpha03'
androidTestImplementation 'androidx.test:rules:1.3.1-alpha03'
person hturan    schedule 02.02.2021