我们正在为一些 Intranet 应用程序实施 Web 测试自动化项目。
为了简化每个测试的编写,我们正在设计一个可以使用不同适配器实现的 Java DSL(到目前为止,我们选择了 Sahi 和 Selenium/WebDriver,因为我们希望在性能、可读性、可维护性等)。
我们在 DSL 中确定了两种类型的操作:
1) Primitive:它的实现肯定要处理 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();
}
问题:我们最初是从一个只有原始操作的接口开始的,但后来我们将其更改为一个抽象类以包含非原始方法(如果需要,允许特定实现覆盖)。但是,将基元和非基元混合起来感觉并不“OK”,而且方法列表肯定会变得很长。
你会建议和/或探索什么其他方法?