Android Espresso-如何检查字符串是否缩写

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

我想检查我的操作栏的字符串是否不太长,并且缩写为“ ...”。我正在使用此代码来检查操作栏的标题是否正确。如果字符串太长并且被缩写,它不会失败。我也尝试使用.isCompletelyDisplayed,但这也不起作用。

onView(withId(R.id.action_bar).check(matches(withText(text)));
java android mobile android-espresso
1个回答
0
投票

使用普通的文本视图,您可以编写一个小的Matcher来检查getEllipsisCount是否大于0。使用​​工具栏,除非您为图块定义了自定义的TextView,否则它会比较棘手。您将需要在Toolbar视图中查找标题视图(使用getChildAtgetChildCount)并进行相同的检查。像

之类的东西
val matcher = object : BoundedMatcher<View, Toolbar>(Toolbar::class.java) {
        override fun describeTo(description: Description?) {
        }

        override fun matchesSafely(item: Toolbar?): Boolean {
            for (i in 0 until (item?.childCount ?: 0)) {
                val v = item?.getChildAt(i)
                (v as? TextView)?.let {
                    // check somehow that this textview is the title
                    val lines = it.layout.lineCount
                    if (it.layout.getEllipsisCount(lines - 1) > 0) {
                        return true
                    }
                }
            }
            return false
        }
    }

然后像]一样使用它>

    onView(withId(R.id.action_bar)).check(matches(matcher))

我自己没有测试过-但您明白了。您也可以检查代码LayoutMatchers以获得一些启发

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