gpt4 book ai didi

使用 Windows 窗体进行 C# 单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:57 24 4
gpt4 key购买 nike

你好,我正在尝试对构造函数如下所示的类进行单元测试:

public Background(Form mainForm, Form optionMenu, bool startMinimized, string server)

因此在我的单元测试中,我需要访问某种 Windows 窗体(实例化一个新窗体或访问现有窗体。)

但据我所知,在单元测试中无法使用 Windows 窗体(除非我遗漏了什么)

无论如何要在不为单元测试创​​建第二个构造函数的情况下解决这个问题?

最佳答案

我不确定您正在做的是单元测试,因为如果您的测试需要实例化一个窗口,那么您也在测试框架。

例如,如果您在 Build 计算机上运行测试,由于雷击而无法创建 .net WinForms 表单,则测试将失败,即使您的代码运行良好。

如果可能,尝试分离依赖关系,并使用某种模拟技术(手写,或使用 MoQ 或 RhinoMocks 等框架)。

Roy Oshorov's blog 中阅读更多相关信息.

更新:阅读您的评论后 (1):

您说您正在测试“通知图标”类 - 如果不依赖于 Windows,很难对它进行单元测试。我会考虑从您的真实业务逻辑中抽象它(我会考虑创建一个系统范围的服务,一个 INotificationService 或其他东西),并测试您的业务逻辑代码如何与该服务使用react - 您可以轻松地放置一个模拟服务并测试您的代码无需使用 .net Framework 进行攻击。

更新:阅读您的评论后 (2):

关于评论“我将在后台测试一个只需要字符串服务器的 ping 函数”——你能将 null 传递给构造函数吗? (可能会抛出异常),或者只是 new Form()?(这种技术称为伪造 - 提供不相关的对象只是为了让测试的安排步骤没有错误地通过 - 有关更多详细信息,请参见 here)

关于使用 Windows 窗体进行 C# 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25763657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com