我想断言是否存在使用Espresso的字符串。
字符串包含固定部分和随机数,例如:FR#133,133是随机数。我怎么能断言呢?
我尝试了以下代码执行固定字符串FR#133检查。
ViewInteraction textView = onView(
allOf(withText("FR#133"),
childAtPosition(
allOf(withId(R.id.toolbar_farmdetail),
childAtPosition(
IsInstanceOf.<View>instanceOf(android.widget.LinearLayout.class),
0)),
1),
isDisplayed()));
textView.check(matches(withText("FR#133")));
答案 0 :(得分:2)
我认为你应该检查这个HamcrestMatchers
和regexp
(正则表达式)。
根据第一个,有许多字符串匹配器,如startsWith(charSequence)
,endsWith(charSequence)
,contains(charSequence)
,它与Espresso
完美配合。
检查:http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html
示例:http://www.leveluplunch.com/java/examples/hamcrest-text-matchers-junit-testing/
教程:http://qathread.blogspot.com/2014/01/discovering-espresso-for-android.html
例如:textView.check(matches(withText(endsWith("133"))));
但是当你使用随机数时,最有趣的匹配器将是matchesPattern()
。
使用正则表达式检查您的字符串是否包含末尾带有数字的正确固定部分。
以下是如何处理它的示例:Regex: Check if string contains at least one digit
举个例子:
textView.check(matches(withText(matchesPattern("FR#133"))));
还要尝试将代码简化为:
textView.check(matchesPattern( “FR#133”));
希望它会有所帮助。
答案 1 :(得分:0)
Espresso + UIAutomator有助于解决Espresso独自无法解决的许多问题。
我的示例函数,用于创建UiObject并在其中声明文本。
public static boolean testNumberIDExists(String startString, UiDevice mDevice)
{
String text="";
UiObject uio= mDevice.findObject(new UiSelector().textStartsWith(startString));
try {
text= uio.getText();
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
return false;
}
return Character.isDigit(text.charAt(text.length()-1));
}