Android robotium中是否有类似pagefactory的模式?

Android robotium中是否有类似pagefactory的模式?,android,robotium,Android,Robotium,我正试图通过使用robotium为我们的Android应用程序构建一个自动化测试用例环境。虽然robotium现在可以运行,但我仍然不知道如何使测试用例更简短或更有条理。现在,测试用例看起来非常复杂和混乱。 当我使用selenium时,有一个pagefactory模式 robotium里有类似的东西吗 您可以使用中的页面对象您可以使用中的页面对象您可以签出项目。Robotium三明治使为Robotium创建页面对象变得超级容易。您可以查看项目。Robotium Sandwich使为Robotiu

我正试图通过使用robotium为我们的Android应用程序构建一个自动化测试用例环境。虽然robotium现在可以运行,但我仍然不知道如何使测试用例更简短或更有条理。现在,测试用例看起来非常复杂和混乱。 当我使用selenium时,有一个pagefactory模式


robotium里有类似的东西吗

您可以使用中的页面对象您可以使用中的页面对象您可以签出项目。Robotium三明治使为Robotium创建页面对象变得超级容易。

您可以查看项目。Robotium Sandwich使为Robotium创建页面对象变得超级容易。

首先,您需要区分这两种模式,页面对象和页面工厂。页面对象模式是通过在moble应用程序中创建表示网页或等效网页的类来实现的。页面工厂模式是页面对象和模式的组合。Selenium确实提供了实现PageObject工厂模式的类,但实现可能很棘手,而且容易出现错误,我和我的同事都不希望使用它

因此,由于页面对象模式是您真正想要的,我将向您展示我的同事和我在Robotium中实现此模式的一些想法

在Robotium中,Selenium WebDriver的大致等价物是Solo类。它基本上是一个用于一系列其他对象的列表,您可以同时看到该列表中所有涉及的类的列表

要使用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中实现页面对象模式时,您可以做很多更奇特的事情,但这会让您从正确的方向开始。

首先,您需要区分这两种模式,页面对象和页面工厂。页面对象模式是通过在moble应用程序中创建表示网页或等效网页的类来实现的。页面工厂模式是页面对象和模式的组合。Selenium确实提供了实现PageObject工厂模式的类,但实现可能很棘手,而且容易出现错误,我和我的同事都不希望使用它

因此,由于页面对象模式是您真正想要的,我将向您展示我的同事和我在Robotium中实现此模式的一些想法

在Robotium中,Selenium WebDriver的大致等价物是Solo类。它基本上是一个用于一系列其他对象的列表,您可以同时看到该列表中所有涉及的类的列表

要使用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中实现页面对象模式时,您可以做很多更奇特的事情,但这会让您朝着正确的方向开始。

Hi!请记住始终用文字或代码描述您的答案。只是一个链接到外部网站不是一个好的选择。嗨!请记住始终用文字或代码描述您的答案。仅仅链接到外部站点并不是一个好的选择。