UI测试Android Studio中的条件警报对话框

问题描述 投票:0回答:2

[当用户登录我的应用程序时,如果是第一次登录,则会显示一个警告对话框。否则,它不会出现。

当我尝试编写UI测试时,这很棘手。由于警报对话框是有条件的,因此无法使用以下命令将其关闭:onView(withId(android.R.id.button1)).perform(click())正如我在其他帖子中看到的建议。

但是,如果它确实出现并且我没有在测试中关闭它,则该测试无法继续进行(因为它无法识别任何其他视图ID),并且失败。

有人对我的处理方式有任何建议吗?

谢谢!

android user-interface dialog alert android-espresso
2个回答
0
投票

听起来((由于您没有提供更多详细信息,我不得不猜测),您正在基于本地存储的值(也许使用PersistentState控制着“第一次”对话框的显示)。

如果是这种情况,您可以直接从Espresso测试中控制该值,从而使测试状态符合预期。

此外,请注意-我强烈建议您不要进行依赖的Espresso测试,听起来像是您基于,“。

您的测试

必须

能够以随机顺序执行并通过。

0
投票
但是,如果确实出现并且我没有在测试中关闭它,测试被阻止继续进行(因为它无法识别其他任何测试查看ID),但失败。

有人对我的处理方式有任何建议吗?

[无论何时编写测试,都必须确保具备必要的条件,以可靠且一致地运行所涉及的测试。这是Arrange, Act, Assert习惯用语的“安排”部分。

因此,如果要测试涉及对话框的流程,则必须安排测试以设置该对话框显示的条件。

如果您要测试

不涉及对话框的流,则必须安排测试以设置不显示对话框的条件。

您尚未发布代码,所以我不知道显示对话框的“条件”是什么,但是基本上,您需要在测试中做一些事情,以确保如果您不希望使用该对话框,则条件为false;否则,则为true你做。也许这是设置共享首选项?

例如,您的测试通常看起来像这样:

@Test fun myAwesomeTest() { // Arrange - do something to ensure dialog does not show SomeHelperClass.setConditionToShowDialog(false) // Act - do actions knowing the dialog will not show onView(withId(R.id.awesomeId)).perform(click()) // Assert onView(withId(R.id.duperId)).check(matches(isVisible())) }

同样,没有代码细节,很难给出更多细节,但希望这足以使您前进。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.