检查按钮文字的正确方法?

时间:2019-05-29 07:36:26

标签: android android-espresso

检查按钮文本的正确方法

我需要检查按钮上的英文文本是否为“ 开始”。

string.xml

<string name="start">Start this</string>

所以这里是Espresso测试:

方法#1

private val buttonStart = viewWithId(startButton)

    @Test
    fun buttonStartText() {
        onView(withId(startButton))
                .check(matches(withText(R.string.start)))
}

测试“ buttonStartText”成功通过。很好。

方法#2

检查硬代码文本。

 @Test
    fun buttonStartText() {
        onView(withId(startButton))
                .check(matches(withText("Start this")))
}

测试“ buttonStartText”成功通过。很好。

问题是: 哪种方法正确?

我的意思是。 假设开发人员出错,并且在string.xml中将键“ 开始”的值更改为"Start this 2222"。 例如

<string name="start">Start this 2222</string>

结果,方法#1 中的测试仍然通过。这是不正确的行为。

但是approach#2中的测试已损坏。这是正确的行为。

因此,我认为在approach#2中进行测试是检查按钮上标题/文字的正确方法。

我说的对吗?

PS

但是如果我有多国语言应用(例如3种语言)。在方法#1 中,没有任何变化。但是在方法#2 中,我需要添加两个额外的测试来检查特定语言的文本。

2 个答案:

答案 0 :(得分:0)

我认为方法1是正确的,因为您覆盖了所有本地人,而方法2中您仅覆盖了英语或特定语言。

答案 1 :(得分:0)

说实话,两种方法都是正确的。

因为方法#1检查是否存在带有来自R.strings的文本的按钮。

但是方法2检查是否确实有该文本。

因此,您正在检查两个不同的事物。取决于您要测试的内容。