【问题标题】:Testing Windows Form application with logic on DB side在 DB 端使用逻辑测试 Windows 窗体应用程序
【发布时间】:2020-05-04 09:02:12
【问题描述】:

我正在开发 C# Windows 窗体应用程序。

所有业务逻辑都在数据库端 (PLSQL)。在 C# 端只是一个前端(列表框、复选框和从 DB 获取数据的按钮)。 我想为它写一些单元测试,但不能在 NUnit3 中使用 Windows 窗体(VS 看不到库,不能创建 ComboBox 等对象)

我的问题是 - 是否有可能通过 NUnit 测试 UI 项目?当业务逻辑在 DB 端时,是否有任何测试的意义?

【问题讨论】:

标签: c# unit-testing nunit


【解决方案1】:

需要明确的是,通过 UI、驱动点击、条目等进行测试的工具不是单元测试。它们只是一种自动执行优秀测试人员会执行的应用程序测试的方法,而无需人工测试人员的创造性洞察力。

设计良好的 GUI(包括为 Windows 窗体编写的 GUI)可以从单元测试中受益,但它通常不需要后端所需的那么多。例如,您无需测试 TextBox 是否显示您输入的文本 - TextBox 的代码不是您的代码。您可能想要测试是否确实将正确的文本提供给TextBox,并且TextBox 的位置和大小设置正确 - 至少它在屏幕上可见。 p>

您可以自行判断需要进行多少此类测试。如果你想编写这样的测试,NUnit 是一个很好的工具——大多数相同级别的测试框架也是如此。如果您不熟悉 NUnit 和/或编程单元测试,您应该知道大多数人认为这种 GUI 测试比后端测试更高级。 (我曾经在 Windows GUI 测试中提供课程,我的目标是那些已经了解 NUnit 并且已经使用它进行单元测试几年的人。)

我的建议是在 GUI 中找到您已经看到或预料到错误的地方。例如,您可能有一个复选框来控制其他控件是否处于活动状态。这种 UI 逻辑 正是 GUI 单元测试的价值所在。

一般建议...

  • 不要尝试对外观进行单元测试 - 看看就好!

  • 使用模拟替换任何后端数据库或服务器端代码。

  • 使用允许单独测试 GUI 逻辑的架构 - 我喜欢用于 Windows 窗体的 MVP 和(显然)用于 WPF 的 MVVM。

  • 分别测试事件的发起和处理,而不是一回事。这对于源自 SWF 控件的事件尤其重要。

如果您这样做并遇到具体问题,请再给我们一个问题。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2010-11-22
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多