web-dev-qa-db-ja.com

Android Espresso-リソースの文字列に対して画面上のテキストをアサートする

Strings.xmlリソースファイルに次のテキストがあります。

_<string name="txt_to_assert">My Text</string>
_

通常、アプリケーションコードでは、このテキストを使用して画面に表示するために、次のことを行っています。

_getString(R.string.main_ent_mil_new_mileage);
_

現時点では、Espressoで記述されたUIテストでこの文字列リソースを使用しようとしています。私はそのようなことをすることを考えています:

_String myTextFromResources = getString(R.string.main_ent_mil_new_mileage);
onView(allOf(withId(R.id.my_text_on_screen), withText(myTextFromResources))
    .check(matches(isDisplayed()));
_

ただし、getString(...)メソッドはここでは使用できません。
strings.xmlリソースファイルからテキストを取得し、Espressoで記述されたテストで使用する方法はありますか?

22
klimos

この機能を使用します。

private String getResourceString(int id) {
    Context targetContext = InstrumentationRegistry.getTargetContext();
    return targetContext.getResources().getString(id);
}

文字列のIDで呼び出して、アクションを実行するだけです。

String myTextFromResources = getResourceString(R.string.main_ent_mil_new_mileage);
onView(allOf(withId(R.id.my_text_on_screen), withText(myTextFromResources))
    .check(matches(isDisplayed()));

*新しいエスプレッソバージョンの編集:

Espressoの新しいバージョンでは、ViewMatcherで文字列リソースを直接呼び出すことができるはずです。最初に、このインポートを直接試すことをお勧めします

import static Android.support.test.espresso.matcher.ViewMatchers.withText;

そして、コードで:

withText(R.string.my_string_resource)
52
adalPaRi

Kotlin:

var resources: Resources = InstrumentationRegistry.getInstrumentation().targetContext.resources
0
PSK

文字列リソースの前にテキストを追加する必要がある場合、このようにする必要があります

val text=getApplicationContext<Context().getResources().getString(R.string.title_tenth_char) 

テキストにアクセスできるようになったので、それに文字列を追加します

0
war_Hero