Android Studio 3.1。 ,Java 1.8。 ,Gradle 4.4。
这里是我的浓缩咖啡测试:
@RunWith(AndroidJUnit4.class)
public class SignInActivityTest {
private Context context;
@Rule
public ActivityTestRule<SignInActivity> mActivityRule = new ActivityTestRule<>(SignInActivity.class, true, false);
private MockWebServer server;
@Before
public void init() throws IOException {
context = getInstrumentation().getContext();
Intent intent = new Intent();
mActivityRule.launchActivity(intent);
}
@Test
public void loginTextViewText() {
String loginString = context.getResources().getString(R.string.login).toUpperCase();
onView(withId(R.id.loginTextView)).check(matches(withText(loginString)));
}
}
但是当我尝试开始测试loginTextViewText()
时出现错误:
android.content.res.Resources $ NotFoundException:字符串资源ID
0x7f0e004f
在android.content.res.Resources.getText(Resources.java:312)在android.content.res.Resources.getString(Resources.java:400)在com.myproject.android.activity.SignInActivityTest.loginTextViewText(SignInActivityTest.java:106)在java.lang.reflect.Method.invoke(本机方法)在org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50)在org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
我该如何解决?谢谢。
对我有用的是使用ActivityTestRule中的活动作为获取字符串的上下文。在您的示例中,它将是:
String loginString = mActivityRule.getActivity().getResources().getString(R.string.login).toUpperCase();