android - 测试 Firebase 登录 - 带有 Espresso 的 Android 应用
问题描述
我正在尝试测试我的应用程序(由我开发),其登录是通过 firebase 管理的。我正在用 Espresso 录音机给他们发短信。
我要测试的是正常的登录,登录后输入邮箱和密码以及一些简单的操作。
碰巧,一旦您输入密码和电子邮件并单击“登录”按钮,应用程序内部就会出现一种“跳转”,因此登录部分不受管理,测试停止并出现以下错误:
androidx.test.espresso.NoMatchingViewException:层次结构中没有找到匹配的视图...
正是因为模拟器和代码留在了登录页面,而记录器却进入了应用程序。
我该如何管理?我如何设置,甚至在我的测试中手动设置进入应用程序的事实?
这里是测试代码:
public class TestQuizMongo {
@Rule
public ActivityTestRule < Splash > mActivityTestRule = new ActivityTestRule < > (Splash.class);
@Test
public void testQuizMongo() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.login_btn), withText("Login"),
childAtPosition(
childAtPosition(
withId(android.R.id.content),
0),
2),
isDisplayed()));
appCompatButton.perform(click());
ViewInteraction appCompatEditText = onView(
allOf(withId(R.id.login_email),
childAtPosition(
childAtPosition(
withId(android.R.id.content),
0),
5),
isDisplayed()));
appCompatEditText.perform(click());
ViewInteraction appCompatEditText2 = onView(
allOf(withId(R.id.login_email),
childAtPosition(
childAtPosition(
withId(android.R.id.content),
0),
5),
isDisplayed()));
appCompatEditText2.perform(replaceText("xxxxxxxxxxxx@gmail.com"), closeSoftKeyboard());
ViewInteraction appCompatEditText3 = onView(
allOf(withId(R.id.login_pwd),
childAtPosition(
childAtPosition(
withId(android.R.id.content),
0),
6),
isDisplayed()));
appCompatEditText3.perform(replaceText("xxxxxx"), closeSoftKeyboard());
pressBack();
ViewInteraction appCompatButton2 = onView(
allOf(withId(R.id.login_btn), withText(endsWith("Accedi")),
childAtPosition(
childAtPosition(
withId(android.R.id.content),
0),
7),
isDisplayed()));
appCompatButton2.perform(click());
try {
Thread.sleep(7000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ViewInteraction appCompatImageView = onView(
allOf(withId(R.id.macro_db), withContentDescription("xxx"),
childAtPosition(
childAtPosition(
withClassName(is("android.widget.LinearLayout")),
1),
5),
isDisplayed()));
appCompatImageView.perform(click());
// Here is the jump: first the code is about the login part
//now the code is about the "internal" part of the app
ViewInteraction appCompatImageView2 = onView(
allOf(withId(R.id.mongo_button),
childAtPosition(
childAtPosition(
withClassName(is("android.widget.LinearLayout")),
3),
1),
isDisplayed()));
appCompatImageView2.perform(click());
解决方案
推荐阅读
- python - Python 代码不会更改我的跟踪数据库
- android - 无法在颤振应用程序的 avd 管理器中启动 AVD
- mysql - findAll 返回空列表
- flutter - 通过 google_sign_in Flutter 刷新令牌获取新令牌
- python - 安装 pythonnet 时选项未识别错误
- r - 根据另一列在数据框中添加一列
- swift - 尽管检查了 nil,但使用 Firestore 在数组中填充数组时仍会崩溃
- .net-core - 在 .Net Core API 中处理嵌套的 JSON 请求数据
- amazon-web-services - 使用 api 密钥进行 AWS 负载均衡器运行状况检查
- c# - 如何在一帧中对多个游戏对象使用“OnClick.AddListener”