2015-12-07 5 views
4

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

Контекст

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

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

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

Потребность

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

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. Поместите все функции в Lib
  2. Написать заводной DSL (потому что заводной хорошо взаимодействуют с Java), который позволяет нетехнических пользователи, чтобы легко писать сценарии
  3. Создайте Java-программу, которая будет оценивать groovy-скрипт и генерировать связанный источник кода Android (с помощью lib (from (1)) в качестве зависимости от градиента).
  4. Run gradle androidTestCompile

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

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

Вопросы

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

ответ

0

Я бы выбрал 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...