安卓。Espresso:android.content.res.Resources$NotFoundException:字符串资源 ID

a_s*_*ber 4 android-espresso

Android Studio 3.1。,Java 1.8。,摇篮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)));
    }


}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试开始测试时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。运行(ReflectiveCallable.java:12)

我该如何解决这个问题?谢谢。

Ben*_*rge 6

如果有人仍然在这个问题上苦苦挣扎,我使用 targetContext 修复了它:

context = InstrumentationRegistry.getInstrumentation().targetContext
Run Code Online (Sandbox Code Playgroud)

因为由于某种原因,有时activityRule.activity 为空。