在使用适当的抽象时,我们是否需要对GUI进行单元测试?

时间:2010-09-13 08:53:24

标签: unit-testing model-view-controller user-interface mvvm mvp

使用MVPMVC等良好的设计模式,我们的目标是将所有逻辑移出GUI。这给我们留下了一个轻量级GUI,理想情况下只需要将其按钮和字段“绑定”到某些业务逻辑层中的属性。这是一个很好的方法,因为这个层将没有GUI的东西,我们可以轻松地为它编写单元测试。

我的问题是:这够了吗?或者我们还应该对GUI层进行单元测试吗?

2 个答案:

答案 0 :(得分:4)

恕我直言,如果从GUI中删除整个逻辑,则无需自动测试。当然你仍然需要运行它以查看它是否应该:)

这是关于单元测试。对于集成测试,测试所有内容仍然很好,例如如果可能的话,由Selenium提供。

答案 1 :(得分:1)

有时GUI并不是那么愚蠢。例如,可能存在拖放支持,自定义组件根据它们的放置位置显示其内容等等。在这种情况下,这些东西需要在集成测试和单独测试中进行专门测试。

大多数情况下,集成测试从UI层开始,我们最终也在这些场景中测试了很多UI层。我曾经读过某人关于单元测试的评论,你不需要为可以轻易破解的代码编写测试,例如getter / setter很容易被破解(例如getter返回它应该做的值,我们可以通过不返回值来轻松打破它)所以我们最终不会为getter和setter编写单元测试,除非它中嵌入了一些逻辑(在这种情况下,它们实际上不是getter和setter)。

因此,如果GUI完全愚蠢并且只有绑定,则不需要进行单元测试。