私は器具テストを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.R
でResourceNotFoundException
を引き起こしている不足している分野があることをチェックしました。このフィールドも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'
次の依存関係をコメントアウトすると、それが動作しますことに気付きました。今のところは大丈夫でしょうが、それはなぜですか、そしてエスプレッソをそのライブラリを投げ捨てることなく動作させる方法は何ですか?
はちょうど好奇心を助けることを願っていますが、その活動のために複数のリソースファイルを持っていますか? – dungtatas
複数のリソースはどういう意味ですか?私は1つの 'res'フォルダと1つの' layout'フォルダを持っています。 –
そのアクティビティには複数のレイアウトがありますか?例えばレイアウトとレイアウト - 土地。しかし、あなたの最後の反応から、それはそれのようには聞こえません。私はあなたが記述した同様の問題を引き起こした異なるビュー要素を持つ複数のレイアウトを持つ問題がありました。 – dungtatas