2016-04-29 14 views
1

Hallo Ich konfrontiert, dass, wenn ich Anwendung in androidTest Manifest-Datei umschreiben, funktioniert es nicht. Dies ist meine AndroidManifest.xml Datei in androidTest Ordner:AndroidTest verwendet keine Testanwendung

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    package="ru.app" 
    android:installLocation="auto"> 

    <application 
     tools:replace="android:name" 
     android:name=".app.ApplicationAndroidTest" /> 

</manifest> 

Dieser Teil der ursprünglichen AndroidManifest.xml von main Ordner ist:

<application 
     android:name=".app.Application" 
     android:allowBackup="true" 
     android:hardwareAccelerated="true" 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:theme="@style/Theme"> 
... 
</application> 

In der Tat ich gedebuggt es, und GetApplication() von Breakpoint in der Aktivität im Test genannt Es gibt .app.Application statt ApplicationAndroidTest Instanz zurück.

Haben Sie irgendwelche Ideen, warum Android-Manifest-Datei von AndroidTest ignoriert wird?

Antwort

2

als Problemumgehung verwendet ich benutzerdefinierte Test Runner Klasse:

public class UiTestsRunner extends AndroidJUnitRunner { 

    @Override 
    @NonNull 
    public Application newApplication(@NonNull ClassLoader cl, @NonNull String className, @NonNull Context context) 
      throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return Instrumentation.newApplication(ApplicationAndroidTest.class, context); 
    } 
} 

Es Nähte für mich ok. Hoffe es hilft jemandem.

0

Ändern der Anwendungsklasse bei androidTest xml hat keinen Einfluss auf die App selbst (getestete App), sondern auf die zusätzliche Android-Test-APK, die zum Aktivieren von Tests auf dem Gerät ausgeliefert wird. Ich bin mir nicht sicher, was ist die genaue Bedeutung der Anwendung, wenn Android-Test apk.

jedenfalls busylee Workaround ist die verfügbare Lösung.
Wichtiger Hinweis: Bei der Definition eines benutzerdefinierten Instrumentierungslaufwerks müssen die Tests mit dem benutzerdefinierten Runner ausgeführt werden. Dies kann in Android Studio durch Bearbeiten der Laufkonfiguration des Testlaufs unter AndroidTests mit einem ausgewählten Test durchgeführt werden Instrumentierungsläufer (optional) 'Option.

+0

Ich habe diesen Ansatz versucht, aber die im androidTest definierten Manifest-Werte wurden nicht in das endgültige Manifest eingefügt (vielleicht funktionierte das früher, aber es scheint nicht mehr so ​​zu sein). Eine Alternative wäre es, mit dem Testmanifest einen "uiTest" -Geschmack zu erzeugen, obwohl ich stattdessen die Erstellung eines benutzerdefinierten AndroidJUnitRunner empfehlen würde. – TheIT

Verwandte Themen