一部のイントラネット アプリケーションの Web テスト自動化プロジェクトを実装しています。
各テストの記述を容易にするために、さまざまなアダプターを使用して実装できる Java DSL を設計しています (これまでのところ、Sahi と Selenium/WebDriver を選択しました。これは、パフォーマンス、読みやすさ、メンテナンス性など)。
DSL では、次の 2 種類の操作が識別されています。
1) プリミティブ:その実装では、HTML/Selenium/Sahi/etc の仕様を確実に処理する必要があります。例: (Sahi Web ドライバーを使用)
public void insertProjectRecord(String projectName) {
b.link("Create new project").click();
b.textbox("ctl00$ProjectForm$Name").setValue(projectName);
b.span("Insert").click();
}
2) 非プリミティブ: プリミティブを使用して構築できますが、再利用のために DSL に含める価値のある操作です。例:
public void createFormulation(String projectName, String rteDummyText) {
goToAddProjectPage();
insertProjectRecord(projectName);
switchToEditModeForFirstAvailableRecord();
editBeneficiaryCountries();
editAcronyms(rteDummyText);
saveSectionChanges();
}
質問:最初はプリミティブ操作のみのインターフェイスから始めましたが、後で非プリミティブ メソッド (必要に応じて特定の実装でオーバーライドできる) を含めるために抽象クラスに変更しました。ただし、プリミティブと非プリミティブを混在させるのは「OK」ではなく、メソッドのリストは確かに非常に長くなります。
他にどのようなアプローチを提案および/または検討しますか?