那么对于不好测试的图形界面,我们该怎么办呢?原则很简单,如果某种东西不好测试,那么让它做肯定不会出错的事情,而把可能会出错的逻辑剥离出来,放到一个可以测试的模块中。对于图形界面来说,是仅仅保持一个很薄的图形界面逻辑,它的工作是把用户的请求简单的转发给真正处理该请求的软件模块(一般称之为Application Facade)。转发逻辑足够简单以至于它肯定不会出错,所以我们也无需对它进行测试。

  如果在进行软件开发时能够首先编写测试代码,那么会迫使你从易使用性,易测试性的角度开考虑问题,从而你会专注于软件模块的高层抽象和职责。这样会定义出清晰的、明确反映意图的模块接口来,另外,为了使得测试能够进行,你会主动把那些导致不好测试的耦合去掉。这样的结果不仅仅是获得了可测试性,并且也产生了更好的设计和系统架构。