AndroidManifest in androidTest Verzeichnis wird ignoriert
Ich versuche zu testen, verwenden Sie die folgende Verzeichnisstruktur (das war das setup von Android Studio):
Kann ich einige tests ganz gut, und auch die AllTests.java
läuft wunderbar ohne die AndroidManifest.xml
Datei auch da sein. Die Sache ist, für eine meiner neuen tests muss ich den android.permission.INTERNET
Berechtigung. Also, ich habe Folgendes in der AndroidManifest.xml
- Datei befindet sich innerhalb der androidTest
Verzeichnis:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.core"
android:versionCode="2"
android:versionName="2.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
Leider, das funktioniert nicht. Ich bin noch immer der folgende Fehler wenn ich mit einem meiner tests:
E/RestAPIRequestTest﹕ Permission denied (missing INTERNET permission?)
Ich habe versucht Einstellung der package
zu com.example.core.test
in meinem AndroidManifest.xml
- Datei (denn das ist, was es zeigt, als in "meine Einstellungen" ->Apps-Liste), aber mit keine Freude.
Ich dachte, dass es nicht auch die Anerkennung der AndroidManifest.xml
Datei, da die Versionsnummer die zeigt nicht in den Einstellungen für die test-app, entweder.
Wie kann ich injizieren Sie die richtigen Berechtigungen für mein Projekt testen?
- Ich weiß, das war über ein Jahr her, aber hast du jemals das gelöst? Mein manifest in src/androidTest/AndroidManifest.xml nicht eingebunden in die vollständige manifest.
- Ich war nicht in der Lage, zu finden eine befriedigende Antwort für dieses, leider. Unsere test-Struktur hat sich stark verändert, so ist dies nicht länger ein Problem für mich, aber vor der änderung keine der Antworten waren für mich zu arbeiten. 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich brauchte, etwas ähnliches zu tun. Ich erstellt einen Ordner namens "debug" neben androidTest, das entspricht der debug-Variante der app, und legen Sie eine AndroidManifest.xml mit der Berechtigung, in diesem Ordner. Dann die Berechtigung funktioniert unter test, da der test-app verwendet das debug-Variante. Es ist nicht ideal, weil es verwischt die Grenze zwischen testen und Debuggen, die nicht ganz dasselbe.
Ich denke, was passiert ist, dass die Berechtigungen in androidTest/AndroidManifest.xml die test-app, nicht in der Ziel-app, obwohl es nicht 100% für mich klar, wenn es tatsächlich zwei verschiedene APKs oder was.
By default, all tests run against the debug build type.
. Sie können mehr darüber Lesen Sie hier.In älteren Versionen von Android Studio und das Android-Gradle-plugin die androidTest/AndroidManifest.xml die Datei wurde ignoriert. Dies wurde dokumentiert in der tools.android.com Website zur Zeit.
Mit dem Android Studio 1.0+ und Android-Gradle 1.0+ plugin Verkaufsstart im Dezember 2014 der AndroidManifest.xml Datei sollten nun zusammengeführt werden, die mit der normalen main/AndroidManifest.xml Dateien (zusätzlich zu den debug-und release-manifest-Dateien wenn Sie existieren). Mehr details in Bezug auf das manifest Zusammenführen Regeln sind hier.
Wenn Sie immer noch laufen in Probleme oder einfach nur in der debugging-manifest im Zusammenhang mit Tests versuchen, diese Fragen
(Eine Anpassung dieser etwas für Windows):
cd MyApplication
./gradlew assembleDebugTest
ls app/build/intermediates/manifests/test/debug/AndroidManifest.xml
ls app/build/intermediates/manifests/full/debug/AndroidManifest.xml
ls app/build/outputs/apk/manifest-merger-debug-report.txt
Ein paar zusätzliche Hinweise:
Als angegeben hier, während instrumentierte tests, die dort generiert werden zwei .apk-Dateien. Wenn Sie einen Blick nehmen, die kleinere, ist es wahrscheinlich eine benannte
app-debug-androidTest-unaligned.apk
und es tatsächlich hat umfassen die bereitgestellten Berechtigungen.Prüfung der Datei mit
aapt d permissions <apk_file_path>.apk
kann nützlich sein, um zu sehen, eine Liste aller von Ihnen.Nun, es könnte ein Problem mit der Kontext selbst, wo die die Erlaubnis beantragt wird. Ich hatte ein ähnliches problem, versucht zu schreiben, ein paar screenshots auf die SD-Karte (also braucht die
WRITE_EXTERNAL_STORAGE
Erlaubnis).Diese Antwort hat mir geholfen, das problem zu beheben, obwohl ich nicht ganz verstehen, warum es notwendig ist.
In wenigen Worten, müssen Sie erklären die gleichen
android:sharedUserId
in beiden manifestiert sich, um zu verschmelzen die Berechtigungen, wenn beide apks installiert sind, auf dem gleichen Gerät - das passiert, wenn die tests ausgeführt werden.Das half mir, mit eigenen Berechtigungen erforderlich, nur zum testen aus die man in der Produktion.
Derzeit (AGP <= 3.4.X) ist nicht die Unterstützung
AndroidManifest
test Zusammenführen.Diese hier berichtet wird: https://issuetracker.google.com/issues/127986458
und hier es ist das Problem, geschaffen von einem der Roboelectric Betreuer.
Den workaround wie beschrieben hier Ihrer Nähe das gleiche vorgeschlagen user3286293 und ist derzeit der einzige Weg, das manifest zusammengeführt, getestet.
Hoffe auf einen fix für AGP 3.5 oder 3.6
Eine Lösung wäre wie bauen Haupt-apk-und-test-apk-im einzelnen ausgeführt.
Beispiel:
./gradlew clean :main:assembleDebug :main:assembleDebugAndroidTest
.Dadurch wird eine neue instrumentierte Haupt-Anwendung, die alle zusätzlichen Berechtigungen, die erforderlich für die test-Anwendung.
Müssen Sie definieren, dass in bauen.gradle-Datei: