检查按钮文本的正确方法
我需要检查按钮上的英文文本是否为“ 开始”。
在 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 中,我需要添加两个额外的测试来检查特定语言的文本。
答案 0 :(得分:0)
我认为方法1是正确的,因为您覆盖了所有本地人,而方法2中您仅覆盖了英语或特定语言。
答案 1 :(得分:0)
说实话,两种方法都是正确的。
因为方法#1检查是否存在带有来自R.strings的文本的按钮。
但是方法2检查是否确实有该文本。
因此,您正在检查两个不同的事物。取决于您要测试的内容。