Android: Robotium vs android test framework

Каждый, кто использует Robotium для тестирования GUI.

Можете ли вы рассказать мне, что Android native framework не может сделать, что Robotium может сделать? Как я знаю, Robotium может использоваться как тестирование черного ящика, поэтому мне не нужно знать о ресурсах приложений. Что еще?

Ответ 1

Разница между Robotium и встроенными инструментами заключается в том, что с Robotium действительно просто написать тест. Он в основном указывает и нажимает, из объекта экземпляра Solo.

Здесь вы можете загрузить файлы JAR и примерный проект, чтобы проверить его самостоятельно.

UPDATE

В качестве примера, я тестирую действие с помощью некоторого Edit Text, spinner и всплывающего диалогового окна, которое появляется, когда я нажимаю опцию spinner. Обратите внимание, что с помощью других методов заполнение полей всплывающего диалогового окна является настоящей болью.

Вот как объявить тестовый класс и инициализацию Robotium

import com.jayway.android.robotium.solo.Solo; //Using Robotium

//Robotium uses ActivityInstrumentationTestCase2.
//Note here the use of the template
public class AddNewQuestionTests extends
                ActivityInstrumentationTestCase2<AddNewQuestion> {

    public AddNewQuestionTests(Class<AddNewQuestion> name) {
        super(name);
    }

    public AddNewQuestionTests() {
        super(AddNewQuestion.class);
    }

    private Solo solo;

    protected void setUp() throws Exception {
        super.setUp();
//Initialize Solo with the instrumentation and the activity under test
        solo = new Solo(getInstrumentation(), getActivity());       
    }

И вот тестовый метод:

    public void testHappyPathAddScaleQuestion() {

            // Type question title
            solo.clickOnEditText(0); //find the EditText, and click it

            solo.enterText((EditText) getActivity().findViewById(

//find the EditText, and put some string
                R.id.activity_add_new_question_editText_question_title),
                            "Question title scale ");
            // Type question description
            solo.clickOnEditText(1);
            solo.enterText((EditText) getActivity().findViewById(
                            R.id.activity_add_new_question_editText_question_description),
                            "Question description scale");
            // Type the question
            solo.clickOnEditText(2);
            solo.enterText((EditText) getActivity().findViewById(
                            R.id.activity_add_new_question_editText_question),
                            "Question scale");

            // Click the spinner and then the "Scale" question type
//Press an spinner option
            solo.pressSpinnerItem(0, 4);

//Wait for the popup dialog title to show up. When robotium reads it, continue working          solo.waitForText(getActivity().getResources().getString(R.string.activity_add_new_question_scale_selection_dialog_message)); 
            // Type minimum and maximum ranges
            solo.clickOnEditText(0);
            solo.searchText(getActivity().getResources().getString(R.string.activity_add_new_question_maximum_value_hint));
            solo.clickOnView(solo.getCurrentEditTexts().get(0));
            solo.enterText(0, "34");
            solo.clickOnView(solo.getCurrentEditTexts().get(0));
            solo.enterText(1, "55");

            // Click ok to close the dialog
            solo.clickOnButton(getActivity().getResources().getString(R.string.OK));

            // Click ok to get an ok message
            solo.clickOnButton(getActivity().getResources().getString(R.string.OK));

            //Wait for the ok toast message
            boolean flagOKDatabase=solo.waitForText(getActivity().getResources().getString(R.string.database_success_storing_data),1,120);
            assertEquals("Something wrong happened with the database", true, flagOKDatabase);
        }

Ответ 2

Robotium

плюсы:

  • поддержка гибридных приложений с webView.
  • вы можете связать свой тест с уникальными идентификаторами тестируемого приложения, когда с помощью UIatomator для написания сложных тестовых примеров вам потребуется большая работа.
  • в UIatomator используется инструмент UiAutomatorTestCase Instrumentation, который не дает вам возможности вызывать текущую активность и проверять, что загружен соответствующий, вы не можете вызывать подключаемые или аудио-менеджеры для тестирования Wi-Fi или звука. В Robotium вы можете легко назвать такие драгоценные камни, и это значительно повышает эффективность ваших тестов.
  • Проект с открытым исходным кодом, поэтому вы можете изменить инструмент в соответствии с вашими потребностями.

минусы:

  • Нет возможности тестировать многопроцессное приложение, где тег android:process используется для разных действий.

пример кода:

Robotium API example

UIautomator

плюсы:

  • Тестовый случай не зависит от процесса, на котором работает тестируемое приложение. Таким образом, его можно использовать в тех местах, где используются дополнительные библиотеки или активность запускается в другом процессе, также полезно, если для проверки требуется переключение между несколькими приложениями.

минусы:

  • Работает только на Android версии 4.1 или более!

  • Вы не можете использовать исходные идентификаторы, когда вы получаете экземпляры ui-object. Это означает, что если структура приложения изменилась на одном макете, вам необходимо реорганизовать ваш тест (эту проблему можно решить, используя теги для каждого ui-элемента).

  • Вы не можете получить текущую активность или Инструментарий. Это означает, что вы ограничены в разработке своих тестов и не использовали многие из методов android api для своих тестов.

  • Сложно отлаживать, вам нужно иметь script для быстрого запуска и быстрого запуска теста и просмотра вывода

просмотрщик иерархии:

Tool for working with UIautomator

Я думаю, что оба этих инструмента хороши, определенно возможность переключения между приложениями во время тестирования является удивительной. Вы должны выбрать инструмент в зависимости от ваших потребностей. Я предлагаю Robotium для тестов, где вам не нужно переключаться между приложениями, потому что у него есть простые методы и возможность использовать Android API для написания гибких и интеллектуальных тестов в коротком коде, который может охватывать даже тестирование веб-страницы внутри webview и milti-process приложения очень необычны.

Ответ 3

Нет недостатка в использовании робота над каркасом инструментария, родным для Android. Это связано с тем, что при использовании robotium вы все равно можете делать все, что могли бы без него, но у вас также есть доступ к множеству полезных функций.

Существуют другие рамки автоматизации Android, хотя они, безусловно, стоит посмотреть. Если у вас есть какой-либо код в веб-представлении, это особенно полезно, поскольку именно здесь робот действительно позволяет себе.

https://github.com/calabash/calabash-android

https://github.com/calabash-driver/calabash-driver

http://testdroid.com/