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で記述されたテストで使用する方法はありますか?
この機能を使用します。
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)
Kotlin:
var resources: Resources = InstrumentationRegistry.getInstrumentation().targetContext.resources
文字列リソースの前にテキストを追加する必要がある場合、このようにする必要があります
val text=getApplicationContext<Context().getResources().getString(R.string.title_tenth_char)
テキストにアクセスできるようになったので、それに文字列を追加します