Мы реализуем проект автоматизации веб-тестирования для некоторых приложений интрасети.
Чтобы упростить написание каждого теста, мы разрабатываем Java DSL, который может быть реализован с использованием различных адаптеров (мы выбрали Sahi иДо сих пор Selenium / WebDriver, поскольку мы хотим измерять их рядом с точки зрения производительности, удобочитаемости, удобства обслуживания и т. Д.).
Мы определили два типа операций в DSL:
1) Примитив: его реализация наверняка будет иметь дело со спецификой HTML / Selenium / Sahi / etc.Пример: (с использованием веб-драйвера Sahi)
public void insertProjectRecord(String projectName) {
b.link("Create new project").click();
b.textbox("ctl00$ProjectForm$Name").setValue(projectName);
b.span("Insert").click();
}
2) Non-Primitive: операция, включаемая в наш DSL для целей повторного использования, хотя ее можно построить с использованием примитивов.Пример:
public void createFormulation(String projectName, String rteDummyText) {
goToAddProjectPage();
insertProjectRecord(projectName);
switchToEditModeForFirstAvailableRecord();
editBeneficiaryCountries();
editAcronyms(rteDummyText);
saveSectionChanges();
}
Вопрос: Мы изначально начали с интерфейса с только примитивными операциями, но позже мы изменили его на абстрактный класс, чтобы включить непримитивные методы (которыеконкретные реализации могут переопределяться, если это необходимо).Однако смешивать примитивы и не примитивы нехорошо, и список методов, безусловно, станет очень длинным.
Какой другой подход вы бы предложили и / или изучили?