我有一堆自动生成的代码(来自 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 原始 API ( Button.Click()
) 出现。