Robotium使用的searchText()函数有问题。
我正在搜索此字符串:

<string name="provisioning_wizard_title_2">Service Activation Wizard (Step 2)</string>

我用字符串xml定义了它,并按如下方式搜索:
Activity act=solo.getCurrentActivity();
String string = solo.getString(act.getResources().getIdentifier("provisioning_wizard_title_2", "string", act.getPackageName()));

我打电话的时候失败了
assertTrue(solo.searchText(string));

如果我打电话给:
assertTrue(solo.searchText("Service Activation Wizard (Step 2)"));

即使这是我在聚焦屏幕活动中看到的字符串。
奇怪的是,如果我使用相同的字符串而不使用最后一个字符,它就会工作:
assertTrue(solo.searchText("Service Activation Wizard (Step 2"));

如果我用
assertTrue(solo.searchText(string.substring(0, string.length()-1)));

我希望有人能帮助我。
对不起我的英语!
谢谢您。
解决的问题
感谢renas reda(robotium的创始人和维护者),我解决了这个问题。
此问题是由于searchText()中的regex支持造成的;某些字符将触发此问题。
使用pattern.quote(字符串)
示例:pattern.qoute(“provisioning_wizard_title_2”)和一切都很好!

最佳答案

我通常使用Solo#waitForText(...)来确保我不会失去一些比赛状态。
试试这个:
assertTrue(solo.waitForText( solo.getString(R.string. provisioning_wizard_title_2) );
确保从生产项目(而不是测试项目)导入正确的R.java文件。

关于android - 适用于Android的Robotium-solo.searchText()无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17741680/

10-11 17:38