代码之家  ›  专栏  ›  技术社区  ›  Unsliced

UI和事件测试

  •  2
  • Unsliced  · 技术社区  · 16 年前

    真正的问题是,我正在努力弄清楚如何对UI和更普遍的生成事件的对象(用户控件、异步数据库操作等)进行单元测试。

    我的很多代码都与UI事件有关,以至于我都不知道如何开始单元测试。

    我通常在C#(2.0和3.5)中工作,但我不确定这是否与这个问题密切相关。

    4 回复  |  直到 16 年前
        1
  •  2
  •   lomaxx    16 年前

    要记住的是,单元测试是关于测试您编写的代码单元。您的单元测试不应该测试单击按钮是否引发事件,而是测试由该单击事件执行的代码是否按预期执行。

    您真正想要做的是测试底层代码,使您的UI层能够自信地执行该代码。

        2
  •  1
  •   Paul Brinkley    7 年前

    Read this 如果您正在努力进行UI测试

        3
  •  0
  •   aku    16 年前

    你应该把逻辑和表达分开。使用MVP(模型视图演示者)/MVC(模型视图控制器)模式,您可以在不依赖UI事件的情况下对逻辑进行单元测试。 你也可以使用 White framework 模拟用户输入。 Patterns&Practices developer center ,特别是看看复合应用程序块和Prism——您可以获得很多关于测试驱动设计的信息。

        4
  •  0
  •   Mendelt    16 年前

    在进行单元测试时,应用程序中与外界对话的部分(即UI、数据库等)总是一个问题。解决这个问题的方法实际上不是测试这些层,而是使它们尽可能薄。对于UI,您可以使用一个不起眼的对话框或视图,它不做任何值得测试的事情,然后将所有逻辑放在控制器或演示器类中。然后,您可以使用模拟框架或编写自己的模拟对象来制作视图的假版本,以测试演示者或控制器中的逻辑。在数据库方面,您可以执行类似的操作。

    测试事件并非不可能。例如,您可以向事件订阅一个匿名方法,该方法在引发事件时引发异常,或者统计引发事件的次数。