在 Espresso 测试中,如何使用 ActivityTestScenario 获取资源
In an Espresso Test, how do I get a resource using ActivityTestScenario
我正在关注 Android Code Lab for Espresso testing
它已经过时了,因为它使用 ActivityTestRule
而不是推荐的 ActivityScenarioRule
过时的代码片段
规则
@RunWith(AndroidJUnit4.class)
public class SpinnerSelectionTest {
@Rule
public ActivityTestRule mActivityRule = new ActivityTestRule<>(
MainActivity.class);
测试
@Test
public void iterateSpinnerItems() {
String[] myArray =
mActivityRule.getActivity().getResources()
.getStringArray(R.array.labels_array);
}
推荐代码
我想通了规则
@RunWith(AndroidJUnit4.class)
public class SpinnerSelectionTest {
@Rule
public ActivityScenarioRule<EspressoSpinnerActivity> mActivityRule = new ActivityScenarioRule(
EspressoSpinnerActivity.class);
测试
如何获取资源 R.array.labels_array
,就像在旧代码(上面)中所做的那样?
我找到了解决方案。关键是使用 InstrumentationRegistry.getInstrumentation().getTargetContext()
获取上下文
创建一个辅助函数来检索字符串数组资源值
private String[] getResourceArray(int id) {
Context targetContext =
InstrumentationRegistry.getInstrumentation().getTargetContext();
return targetContext.getResources().getStringArray(id);
}
然后在@Test方法中,可以获取数组
@Test
public void iterateSpinnerItems() {
String[] arr = getResourceArray(R.array.labels_array);
}
我正在关注 Android Code Lab for Espresso testing
它已经过时了,因为它使用 ActivityTestRule
而不是推荐的 ActivityScenarioRule
过时的代码片段
规则
@RunWith(AndroidJUnit4.class)
public class SpinnerSelectionTest {
@Rule
public ActivityTestRule mActivityRule = new ActivityTestRule<>(
MainActivity.class);
测试
@Test
public void iterateSpinnerItems() {
String[] myArray =
mActivityRule.getActivity().getResources()
.getStringArray(R.array.labels_array);
}
推荐代码
我想通了规则
@RunWith(AndroidJUnit4.class)
public class SpinnerSelectionTest {
@Rule
public ActivityScenarioRule<EspressoSpinnerActivity> mActivityRule = new ActivityScenarioRule(
EspressoSpinnerActivity.class);
测试
如何获取资源 R.array.labels_array
,就像在旧代码(上面)中所做的那样?
我找到了解决方案。关键是使用 InstrumentationRegistry.getInstrumentation().getTargetContext()
创建一个辅助函数来检索字符串数组资源值
private String[] getResourceArray(int id) {
Context targetContext =
InstrumentationRegistry.getInstrumentation().getTargetContext();
return targetContext.getResources().getStringArray(id);
}
然后在@Test方法中,可以获取数组
@Test
public void iterateSpinnerItems() {
String[] arr = getResourceArray(R.array.labels_array);
}