Как создать тесты пользовательского интерфейса из DSL?

Я не уверен, что этот вопрос относится к SO, так как он может быть слишком широким, но я не знаю, где его задать (я не нашел лучшего сайта для обмена стеками).

Контекст

Я использую UiAutomator для записи некоторый тест пользовательского интерфейса на Android. Я создал несколько функций для упрощения написания тестов, как в документе.

public void startMainActivityFromHomeScreen() {
    /*Start the app from the home screen*/
}

Как разработчик, это работает нормально. Но не технические люди (владелец контракта) не могут легко использовать эти функции для написания тестов.

Потребности

Я ищу способ для нетехнических пользователей написать несколько сценариев, используя уже определенную функцию. Вот фиктивный пример (как формат скрипта, так и действия)

Suite: Launch the app twice from the home screen

Case: Launch the app for the first time
  Do startMainActivityFromHomeScreen
  Expect ...

Case: Launch the app for the second time
  Do startMainActivityFromHomeScreen
  Expect ...

Важным моментом здесь является взаимодействие с функциями Java. Я знаю другие инструменты, такие как calabash, но они не предоставляют интерфейсы Java.

Текущий подход

Вот идея (ничего не реализовано)

  1. Поместите все функции в библиотеку
  2. Напишите groovy dsl (поскольку groovy хорошо взаимодействует с java), который позволяет нетехническим пользователям легко писать сценарии.
  3. Создайте java-программу, которая будет оценивать groovy-скрипт и генерировать источник кода Android, связанный (с lib (из (1)) в качестве зависимости gradle).
  4. Беги gradle androidTestCompile

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

Я ненавижу эту идею, так как мне нужно генерировать исходный код из своего кода, но это единственный, который у меня есть.

Вопросы

  • Так ли ужасен этот подход, как я думаю?
  • Вы знаете другой способ сделать это?

person ThomasThiebaud    schedule 07.12.2015    source источник


Ответы (1)


Я бы проверил https://cucumber.io/docs/reference/jvm#java, это библиотека, которая выполняет именно то, что вы ищете, позволяя вам связать регулярные выражения с методами тестирования Java.

Ваш Java-код будет выглядеть примерно так:

@When("^I open the app from the (main|home) screen$")
public void openApp(String launchScreen) { 
    ... 
}

И файл тестирования будет выглядеть так:

Feature: Launching app

Scenario: Launching from first screen
    When I open the app from the main screen
    Then I see a blue icon...

Scenario: Launching from second screen
    When I open the app from the second screen
    Then I see a green icon...
person Stuart Douglas    schedule 14.10.2016