我正在尝试使用robotium 为我们的Android 应用程序构建一个自动化测试用例环境。尽管robotium 现在可以运行,但我仍然对如何使测试用例更简短或更有条理感到困惑。现在测试用例看起来非常复杂和混乱。当我使用 selenium 时,有一个 pagefactory 模式。
机器人中有类似的东西吗?
首先,您需要区分Page Object和Page Factory这两种模式。
所以,既然页面对象模式是您真正想要的,我将向您展示一些我和我的同事为在 Robotium 中实现此模式而提出的一些方法。
在 Robotium 中,Selenium WebDriver 的粗略等价物是 Solo 类。它基本上是同时处理一堆其他对象的装饰器(您可以在GitHub 存储库中看到所有相关类的列表)。
要使用 Robotium Solo 对象实现页面对象模式,首先从具有 Solo 字段的抽象页面对象开始(例如在 Selenium 中您将拥有 WebDriver 字段)。
public abstract class AppPage {
private Solo solo;
public AppPage(Solo solo) {
this.solo = solo;
}
public Solo getSolo() {
return this.solo;
}
}
然后,为每个页面扩展 AppPage,如下所示:
public class MainPage extends AppPage {
public MainPage(Solo solo) {
super(solo);
}
// It is useful to be able to chain methods together.
// For public methods that direct you to other pages,
// return the Page Object for that page.
public OptionsPage options() {
getSolo().clickOnButton(getSolo().getString(R.string.options_button));
return new OptionsPage(getSolo());
}
//For public methods that DON'T direct you to other pages, return this.
public MainPage searchEntries(String searchWord) {
EditText search = (EditText) solo.getView(R.id.search_field);
solo.enterText(search, searchWord);
return this;
}
}
在 Robotium 中实现页面对象模式时,您可以做更多花哨的事情,但这会让您朝着正确的方向开始。
您可以查看Robotium-Sandwich项目。Robotium-Sandwich 让为 Robotium 创建页面对象变得超级容易。