Winforms UI 单元测试

2024-01-09

我正在为我的用户控件编写一个测试用例,它将提示使用 MessageBox.Show 进行用户操作,要求处理或取消操作。 我如何设计我的单元测试来模仿用户交互以继续?

我不想重构以将逻辑移至中间层。这是获得用户同意并继续进行中间层调用的简单案例。任何针对此场景重构 UI 的帮助/想法也会有所帮助。


单击按钮无非是调用相应的按钮click事件。所以你可能想围绕它构建你的测试。

更好的是(如果情况还不是这样),将代码移出前端,并围绕业务操作构建单元测试,否则您可以通过单击按钮来调用。

作者编辑后更新
只要您不准备拆分事物,您就无法让它发挥作用,您无法围绕“单击此处”、“单击那里”构建单元测试。想象一下下面的代码:

private int MyFunction()
{
    bool insideVariable = false;
    if(insideVariable) 
        return 1;
    else
        return 2;
}

你会never能够对 insideVariable 设置为 true 的情况进行单元测试;您可以:

  1. 重构你的代码,这样return 1声明位于中间层的某个位置
  2. 重构以便return 1语句是 GUI 中的一个方法。然后您可以测试该功能。

应用程序前端应该很容易替换,因此不应在其中存储任何业务逻辑。单元测试只是主 GUI 旁边的另一个前端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winforms UI 单元测试 的相关文章

  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 与 White 的集成测试[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有人有白色框架的经验吗 www co
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • C++ 中 void(*)() 和 void(&)() 之间的区别[重复]

    这个问题在这里已经有答案了 在此示例代码中 func1是类型void int double and funky是类型void int double include
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl

随机推荐

  • 当使用Server.Transfer时,整个Asp.Net生命周期是否再次执行?

    我知道 Server Transfer 不会往返返回请求客户端 我无法了解到的是 控制权是否只是直接传递给您要转移到的新请求处理程序 或者是否再次执行整个请求生命周期 我假设使用传输 URL 再次执行整个生命周期 但想验证情况是否如此 这是
  • Postgres 中整理的目的

    我是 Postgres 新手 我刚刚开始学习here http www w3resource com PostgreSQL pl pgsql declarations php 我从 select 语句中找到 COLLATE C SELECT
  • 从 Postman 生成 Azure 访问令牌

    我想从 Postman 生成 Azure 令牌 以便在我的项目中进行 API 授权 我可以使用下面的 API 请求生成令牌 但收到以下错误消息 此请求的授权被拒绝 在另一个 API 请求中使用生成的令牌时 端点 https login mi
  • 为什么字符串上的 + + 会产生奇怪的结果

    我正在努力使用 jQuery 动态附加元素 发现使用时 表明NaN并且不会添加下一个文本 我能以某种方式猜到 在这里作为算术加运算符并返回NaN 这不是增量运算符 因为两者之间有空格 我的问题是 这里实际发生了什么所以它返回NaN Why
  • sqlalchemy、postgresql 和关系陷入“事务中空闲”状态

    我有一个与 sqlalchemy 和 postgresql 相关的问题 class Profile Base roles relationship Role secondary role profiles backref profiles
  • 在 Windows 中检查端口可用性的 VBS 脚本

    我正在尝试检查某个软件的先决条件 我有一组脚本来检查并检查磁盘空间 内存可用性等内容 我需要创建一个脚本来检查某些端口是否打开且可访问 我正在使用 WMI 检查其他网络配置项 但找不到任何检查端口可用性的参考 任何人都知道我可以在哪里找到
  • 如何在正方形中显示图像的特定部分

    我在反应本机中的图像组件有问题 我想在某个正方形中显示图像的特定部分 F e 假设我的图像分辨率为 1280x720 private someImage require Assets someImage jpg 我想以方形组件显示此图像 大
  • 如果从电子邮件中单击链接,则引用 URL

    我有一个用户注册过程 其中我向用户发送一封电子邮件以进行电子邮件验证并激活他们的帐户 现在当activate link单击电子邮件中的链接后 如何获取引荐来源网址来告诉我用户是否通过单击电子邮件中的链接来到该页面 在生成电子邮件之前 您需要
  • 您可能需要一个适当的加载器来处理此文件类型上传图像文件

    我在react babel webpack 中使用图像文件 但它显示一个错误 ERROR in public assets scissors png Module parse failed home rohit Desktop game p
  • 如何强制 Maven 使用 maven-install-plugin 版本 2.5?

    我想使用 maven install plugin 将一些 jar 安装到我的本地 Maven 存储库中 我的maven 3 2 1安装使用这个插件的2 4版本 它需要指定很多参数 我想使用需要较少参数的 2 5 版本 如上所述http m
  • scala 中的 Hello World 有什么问题?

    我在学习scala来自 docs scala lang org 有一个example https docs scala lang org overviews scala book hello world 2 html object Hell
  • 一个月中的周数

    我有以下代码 NSDate dateNow NSDate alloc init NSTimeInterval timeDifference usersDate timeIntervalSinceDate dateNow Get the sy
  • Postgres 选择当前小时数据

    我有一个带有表 token 的 postgres 数据库 它有 token id 及其生成时间 token id generated time 196618 2016 10 15 01 02 48 963 196619 2016 10 15
  • PostgreSQL 9.4.2 中“CREATE TRIGGER”使用什么锁(如果有)

    根据Postgres XL http files postgres xl org documentation explicit locking html CREATE TRIGGER使用SHARE ROW EXCLUSIVE锁定 但根据Po
  • 数据表类型错误:c 未定义

    我尝试使用 jQuery DataTables 但出现错误 类型错误 c 未定义 我不知道我的代码有什么问题 因为我可以看到 JSON 正确检索并且格式也正确 但我不知道我收到上述错误有什么问题 我的 JSON Data LOGIN 101
  • 消除宝石错误

    我有使用 RVM 的 2 个版本的红宝石 我正在尝试删除此红宝石中的所有宝石version 1 8 7 p302 首先我尝试了这个 但出现错误 gem list cut d f1 xargs gem uninstall aIx Succes
  • airflow.exceptions.AirflowException:在 DAG 中检测到循环。任务错误

    我正在运行气流管道 但代码看起来不错 但实际上我收到了airflow exceptions AirflowException 在 DAG 中检测到循环 错误任务 你能帮忙解决这个问题吗 发生这种情况的原因是多个任务中有重复的 task id
  • C语言中如何将线程分配给不同的核心?

    我创建了一个程序 使用 4 个线程对 8 个数字进行加法 然后计算结果的乘积 如何确保每个线程使用单独的核心以获得最大性能提升 我是 pthreads 新手 所以我真的不知道如何正确使用它 请提供尽可能简单的答案 My code inclu
  • 如何获取我的表单父级窗口的当前标题?

    我有一个 WinForm 应用程序 它是其他进程 例如 Google Chrome 的 Windows 的父级 我使用以下代码将 Windows 设为我的表单的父级 使用返回的句柄 Process MainWindowHandle 我正在努
  • Winforms UI 单元测试

    我正在为我的用户控件编写一个测试用例 它将提示使用 MessageBox Show 进行用户操作 要求处理或取消操作 我如何设计我的单元测试来模仿用户交互以继续 我不想重构以将逻辑移至中间层 这是获得用户同意并继续进行中间层调用的简单案例