Android Espresso中的辅助功能测试时抑制失败的工作示例?

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

我有这样的测试设置:

基类:

public class AccessibilityBase {

    public static AccessibilityValidator accessibilityValidator;

    @BeforeClass
    public static void enableAccessibilityChecks() {
        accessibilityValidator = AccessibilityChecks.enable().setRunChecksFromRootView(true).setThrowExceptionForErrors(true);
    }
    ...

测试类:

public class LoginAccessibilityTest extends AccessibilityBase {

    @Rule
    public ActivityTestRule<LoginActivity> activityTestRule = new ActivityTestRule<>(LoginActivity.class, true, false);

    @Test
    public void testLoginActivity() {
        Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
        Intent intent = new Intent(context, LoginActivity.class);
        LoginActivity loginActivity = activityTestRule.launchActivity(intent);

        accessibilityValidator.setSuppressingResultMatcher(Matchers.anyOf(
                allOf(matchesCheckNames(is("TouchTargetSizeViewCheck")),
                        matchesViews(withId(R.id.main_button_login)))
        ));

        runAllTests(loginActivity);
    }
}

但是,当我运行它时,它仍然失败,并显示以下错误消息:

java.lang.AssertionError:按钮app:id / main_button_login:视图降到触摸目标的最小建议大小以下。最小触摸目标尺寸为48x48dp。实际尺寸为446.0x45.0dp(屏幕密度为3.0)。

accessibility android-espresso android-accessibility
1个回答
0
投票

您永远都不要抑制失败。

它可以告诉您要纠正的地方。

最小尺寸不是整体尺寸,它是每个方向上的最小值(因此,您可能有一个1000dp宽按钮,其高度为45dp,但由于高度不是48dp的最小值,您仍然会失败])

我知道3dp似乎什么都不是,但是实际上它们是最小值,您应该尝试超过它们。

想象一下您患有帕金森氏病或脑性瘫痪,您将无法准确地击中小型击中目标,这就是为什么设定最低标准的原因。

将按钮稍大一些,而不是尝试消除错误(3dp可能不会破坏设计)。

您的每一位客户都会感谢您的帮助。 (想象一下,有人在乘车时试图敲击您的按钮,同样的准确性原则。)

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