测试复杂的自定义WinForms控件

时间:2011-04-20 15:38:30

标签: winforms user-interface testing controls

我正在开发相当复杂的.NET自定义控件(40K代码行),但在测试时遇到了一些麻烦。

我已经完成了几个演示控件主要功能的示例项目,但是只能测试一小部分控制状态和操作。

由于这些问题,单元测试也没用:

  • 大量用例(例如描述“项目选择”可能需要4页的规格)
  • 做同样事情的许多方式(以及用户代码或GUI)
  • 控件有许多状态是子状态,任何状态都可能无法在每个状态下工作
  • 如何测试设计时支持?

我知道这是GUI测试的常见问题,所以我想问你是否有任何完善的测试自定义可视化组件的做法

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

主要是将GUI测试限制到最低限度,因为它是最昂贵的测试方式。在40K行代码中,我认为90%的代码根本不适用于WinForm GUI元素。所以大部分都可以通过单元测试来解决,但这取决于你构建代码的方式。

需要考虑的事项:

  • SOLID原则,特别是单一责任原则(SRP) - 而不是几个巨大的“上帝”类,你应该依赖大量的小“服务”接口和只做一件事并且做得好的课程。您可以为这些编写单独的测试,然后一旦您知道它们正常工作就可以将它们组合成更大的图片。
  • MVP模式(实际上是Passive View):WinForm GUI代码应该只是一个薄层(View),其他一切都应该在Presenters和Model中。
  • Presenter First approach

我在relatively complex WinForms application工作,这些模式从未让我失望。

对于GUI测试,我使用UI Automation,但仅适用于某些标准情况。非GUI单元测试涵盖了其他所有内容。