.net - 单元测试用户界面。什么是有效的方法?

标签 .net winforms unit-testing

我有一个会计和工资单客户端/服务器应用程序,其中有几个带有复杂数据验证规则的输入表单。我正在寻找一种有效的方法来执行用户界面的单元测试。

对于复杂的验证规则,我的意思是:

  • “如果我在文本字段 Y 中插入值,则禁用按钮 X”
  • “如果我在文本字段中插入值,则启用组合框”
    ......
    ......

  • 我发现的最有希望的模式是由 M. Fowler ( http://martinfowler.com/eaaDev/ModelViewPresenter.html ) 提出的。

    你有用户界面单元测试的经验吗?作为我使用的技术堆栈:.NET 3.5 & Windows Forms Widget Library。

    最佳答案

    我不会确切地称其为“单元测试”,但我在针对 WinForms UI 以及使用 WatiN 的 Web UI 运行自动化测试方面取得了一定程度的成功。

    假设您可以获得要测试的应用程序窗口的句柄,您应该能够编写大量 C# 代码来测试用户界面的功能。

    许多人谴责尝试针对 UI 运行自动化测试的想法,因为有太多的东西您无法以这种方式进行测试。例如,没有自动化测试会注意到字体丑陋或某些文本令人困惑或按钮略微偏离中心。毫无疑问,对于这些类型的事情,你肯定需要一个聪明的人看着屏幕。

    但是,除了这种类型的测试之外,肯定还有大量可以自动化并定期执行的重复测试。大多数大型应用程序都有一整批回归测试脚本,每当新版本发布时必须手动执行这些脚本。这些测试通常是你可以训练一只猴子去做的事情,只是一个点击这个链接、输入一些文本、点击这个按钮、检查结果消息等的指令列表。这些事情非常浪费你的 QA 测试人员的时间,而且让他们痛苦,所以如果他们可以自动化,那就太好了。这些类型的测试应该能够每天由您的构建服务器自动运行,并且可以设计得比任何手动测试都要彻底。

    同样,它不会发现奇怪的意外情况,但它会给您一定程度的信心,即您的小更改不会破坏您在应用程序另一端从未听说过的其他屏幕。

    诚然,这会为开发人员带来更多的持续工作,因为对应用程序的微小更改可能会因为愚蠢的原因而破坏测试,就像任何自动化测试一样,但它应该为您节省大量的测试和调试时间。这对你来说是否值得由你来决定,但我认为这是一个不应该像你通常看到的那样迅速被驳回的考虑。

    关于.net - 单元测试用户界面。什么是有效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850179/

    相关文章:

    c# - WebBrowser 控件不再显示 PDF

    winforms - 找不到 InsertOnSubmit() 方法

    c# - 如何在 MSTest 中处理 currentDomain.UnhandledException

    java - Spring Boot 中与 JUnit5 和 Mockito 的集成测试

    .net - 如何在 .net x64 中保存/加载 16 位图像?

    c# - 如果您没有任何异步代码,您如何处理返回 Task 的第 3 方接口(interface)?

    c# - .NET 中的 GO 语句炸毁了 sql 执行

    .net - 如何获取.NET分配的IP地址和端口号

    java - 加载 native 库的单元测试 Java 类

    c# - 带有 Mono 的 MissingMethodException