以下のようなパブリック インターフェイスを公開する自動生成コード (Ranorex GUI テスト ツールから取得) がたくさんあります。
public partial class MessageBoxPopupAppFolder : RepoGenBaseFolder
{
// Ranorex.Button exposes public methods like Click()
public virtual Ranorex.Button ButtonYes
{
get
{
return _buttonyesInfo.CreateAdapter<Ranorex.Button>(true);
}
}
}
私の問題は、以下のコードのような中間層を作成している最中であり、そのコードのユーザーが自動生成されたコードを直接呼び出すことによってそれをバイパスしないことを期待していることです (それはおそらく複雑なビジネスルールを破るでしょう) )
public class MyAdapter
{
private MessageBoxPopupAppFolder _myMessageBox;
public static void Acknowledge()
{
// some complex business rules
_myMessageBox.ButtonYes.Click();
}
}
私はいくつかの解決策を考えましたが、本当に満足できるものはありません:
- 自動生成されたコードを手動で (またはスクリプトを使用して) 変更して、Ranorex メソッドの可視性を変更します。これは、名前空間のリファクタリングが少し必要になることを意味し、コードの再生成による維持が困難になります。
- このコードを完全に別のバイナリにリンクし、完全にプライベートな API を介して通信します。たくさんの仕事が待ち受けています
- その API の「禁止された」使用を検出して (単体テストの失敗として) 報告する、ある種のコード自己評価を実装します。
どうすればよいですか?
明確にするために、ミドルウェアを秘密にしておくことは心配していません。実際のクリックの正しいシーケンスを制御する必要があるだけです。
編集: チーム メンバー (ミドルウェアのユーザー) に公開したいのは、ビジネス指向の API (のようなAcknowledge()
) です。これで問題ありません。良くないのは、Ranorex raw API ( Button.Click()
) が来るのを防ぐことができないということです。