2016-08-01 14 views
1

私は器具テストをapp/androidTest/java/myappにしています。私はそこに1つの簡単なテスト方法があります:インストルメンタルテスト - setContentView()のヌルポインタ例外

public class LoginActivityTest { 

    private static final String EMAIL = "[email protected]"; 
    private static final String PASSWORD = "admin"; 

    @Rule 
    public IntentsTestRule<LoginActivity> loginActivity = new IntentsTestRule<>(LoginActivity.class); 

    @Test 
    public void LoginWithProperCredentials() { 
     onView(withId(R.id.email_textView)) 
       .perform(typeText(EMAIL)); 
     onView(withId(R.id.password_login)) 
       .perform(typeText(PASSWORD)); 
     onView(withId(R.id.email_sign_in_button)) 
       .perform(click()); 

     intended(allOf(
       hasExtra(GeneralConstants.AUTHENTICATED, true), 
       hasExtra(GeneralConstants.TOKEN, isA(String.class)), 
       toPackage("myapp"))); 
    } 
} 

私は、Androidのサポートリポジトリをアップグレードしneccessary androidTestCompile依存関係だけでなく、デフォルトのtestInstrumentationRunner("android.support.test.runner.AndroidJUnitRunner")を添加し、私はバリアントを構築するようAndroid Instrumentation Testsを選択したしました。それでも、テストを開始しようとすると私にResourceNotFoundExceptionが与えられます。私は、この例外をスローするのはonCreate(Bundle bundle)setContentView()メソッドであることを理解しました。

私はしばらくこの問題に苦しんでいます。それの理由は何でしょうか?

EDIT:

私はmyapp.test.RResourceNotFoundExceptionを引き起こしている不足している分野があることをチェックしました。このフィールドもmyapp.Rにありますが、異なる値が割り当てられています(test.Rの0x7f040015と0x7f030015 - このフィールドは欠落しています)。私は明示的にインポートしようとしました:

import pl.kawowydzienniczek.kawowydzienniczek.test.R; 

しかし、その後は、作成しようと:

onView(withId(R.id.email_textView)) 
       .perform(typeText(EMAIL)); 

は私にemail_textViewは解決できないというエラーが発生します。 どうすればいいですか?

EDIT2:

私は

androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'

次の依存関係をコメントアウトすると、それが動作しますことに気付きました。今のところは大丈夫でしょうが、それはなぜですか、そしてエスプレッソをそのライブラリを投げ捨てることなく動作させる方法は何ですか?

+0

はちょうど好奇心を助けることを願っていますが、その活動のために複数のリソースファイルを持っていますか? – dungtatas

+0

複数のリソースはどういう意味ですか?私は1つの 'res'フォルダと1つの' layout'フォルダを持っています。 –

+0

そのアクティビティには複数のレイアウトがありますか?例えばレイアウトとレイアウト - 土地。しかし、あなたの最後の反応から、それはそれのようには聞こえません。私はあなたが記述した同様の問題を引き起こした異なるビュー要素を持つ複数のレイアウトを持つ問題がありました。 – dungtatas

答えて

0

によると、今のところは大丈夫でなければなりませんが、なぜその方法と、そのライブラリを投げずにエスプレッソ 作品を作ることはありますか?

ここに私のbuild.gradle設定です:

dependencies { 
    ext.JUNIT_VERSION = '4.12' 
    ext.SUPPORT_VERSION = '24.1.1' 
    ext.ESPRESSO_VERSION = '2.2.2' 

    compile fileTree(dir: ulibs', include: ['*.jar']) 
    testCompile "junit:junit:$JUNIT_VERSION" 
    testCompile("org.robolectric:robolectric:3.0") { 
     exclude module: 'classworlds' 
     exclude module: 'commons-logging' 
     exclude module: 'httpclient' 
     exclude module: 'maven-artifact' 
     exclude module: 'maven-artifact-manager' 
     exclude module: 'maven-error-diagnostics' 
     exclude module: 'maven-model' 
     exclude module: 'maven-project' 
     exclude module: 'maven-settings' 
     exclude module: 'plexus-container-default' 
     exclude module: 'plexus-interpolation' 
     exclude module: 'plexus-utils' 
     exclude module: 'wagon-file' 
     exclude module: 'wagon-http-lightweight' 
     exclude module: 'wagon-provider-api' 
    } 

    compile "com.android.support:appcompat-v7:$SUPPORT_VERSION" 
    compile "com.android.support:design:$SUPPORT_VERSION" 

    androidTestCompile 'com.android.support.test:runner:0.5' 
    androidTestCompile "com.android.support:support-annotations:$SUPPORT_VERSION" 
    androidTestCompile "com.android.support.test.espresso:espresso-core:$ESPRESSO_VERSION" 
    androidTestCompile "com.android.support.test.espresso:espresso-intents:$ESPRESSO_VERSION" 
    /** 
    * AccessibilityChecks 
    * CountingIdlingResource 
    * DrawerActions 
    * DrawerMatchers 
    * PickerActions (Time and Date picker) 
    * RecyclerViewActions 
    */ 
    androidTestCompile("com.android.support.test.espresso:espresso-contrib:$ESPRESSO_VERSION") { 
     exclude group: 'com.android.support', module: 'appcompat' 
     exclude group: 'com.android.support', module: 'support-v4' 
     exclude group: 'com.android.support', module: 'support-v7' 
     exclude group: 'com.android.support', module: 'design' 
     exclude module: 'support-annotations' 
     exclude module: 'recyclerview-v7' 
    } 
    compile "junit:junit:${JUNIT_VERSION}" 
} 

は、私はすでにやったのと同じグループ・モジュールとグループを除外するようにしてくださいが。

チェック:https://github.com/piotrek1543/LocalWeather/blob/master/app/build.gradle

はそれが