Я не уверен, что этот вопрос относится к 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.
Текущий подход
Вот идея (ничего не реализовано)
- Поместите все функции в библиотеку
- Напишите groovy dsl (поскольку groovy хорошо взаимодействует с java), который позволяет нетехническим пользователям легко писать сценарии.
- Создайте java-программу, которая будет оценивать groovy-скрипт и генерировать источник кода Android, связанный (с lib (из (1)) в качестве зависимости gradle).
- Беги
gradle androidTestCompile
Поскольку функции находятся в библиотеке, разработчики могут легко включать и использовать их в своих проектах. Таким образом, одна и та же библиотека может использоваться для всех пользователей.
Я ненавижу эту идею, так как мне нужно генерировать исходный код из своего кода, но это единственный, который у меня есть.
Вопросы
- Так ли ужасен этот подход, как я думаю?
- Вы знаете другой способ сделать это?