最近,我参加了一个项目,该项目最初是用Swing编写的胖客户端Java应用程序。后来他们有了支持http请求的要求。因此,他们实现了这样的代码:

public void handleRequest(...) {
    if(contextPath.equals("purchase-product")) {
        getMainPanel().getPurchasePanelButton().doClick();
        getMainPanel().getPurchasePanel().selectProductById(productId);
        if(getMainPanel().getPurchasePanel().getPurchaseButton().isEnabled()) {
           getMainPanel().getPurchasePanel().getPurchaseButton().doClick();
           ...
        }
    }
    ....
}


我的第一个想法是WTF。他们不熟悉MVC模式吗?

但是后来我想到他们实现了这样的代码,以便能够使用JMeter或SoapUI通过http请求而不是诸如Squish之类的复杂GUI框架来执行Swing GUI测试。

我的问题是人们是否使用类似的技术来简化其组件测试?此(反)模式的名称是什么?

最佳答案

我投票赞成“ Big Ball of Mud”。无论如何,这显然与有用的模式“ Tell, Don't Ask”相反,所有这些访问器(获取)方法在每个可能的抽象级别公开实现细节。这是对Demeter的漠视,这是非常了不起的,在第二篇参考文献中也提到了这一点。

10-06 12:47