2016-04-29 6 views
1

こんにちは、androidTestマニフェストファイルでアプリケーションを書き直すと、動作しません。テスト中のアクティビティにブレークポイントからgetApplication(と呼ばれる実際にはAndroidTestはテストアプリケーションを使用していません

<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> 

私はそれをデバッグ、および):mainフォルダから

<?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> 

これは、元のAndroidManifest.xmlの一部である:これは私のandroidTestフォルダ内のAndroidManifest.xmlファイルですApplicationAndroidTestインスタンスの代わりに.app.Applicationを返します。

androidTestのアンドロイドマニフェストファイルが無視される理由はありますか?

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); 
    } 
} 

それは私のために[OK]縫い目:私は、カスタムのテストランナークラスを使用し、回避策として

答えて

2

。誰かを助けることを願っています。

0

androidTest xmlのアプリケーションクラスを変更しても、アプリ自体(テスト済みアプリ)に影響はありませんが、テストを有効にするために追加のアンドロイドテストapkがデバイスに追加されます。私はアンドロイドのテストAPKには、アプリケーションの正確な意味は何か分かりません。

とにかくbusylee回避策は利用可能な解決策です。
重要なインストルメンテーションランナーを定義するときは、カスタムランナーを使用してテストを実行する必要があります。これはAndroidスタジオでテスト実行の設定を編集して実行できます。計測ランナー(オプション) 'オプション。

+0

私はこのアプローチを試しましたが、androidTestで定義されたマニフェスト値が最終的なマニフェストにマージされていませんでした(おそらくこれはうまく動作していましたが、もう見えません)。代わりにテストマニフェストで 'uiTest'フレーバを作成することもできますが、代わりにカスタムAndroidJUnitRunnerを作成することをおすすめします。 – TheIT

関連する問題