gpt4 book ai didi

c# - 从单元测试触发 UI 控制事件

转载 作者:行者123 更新时间:2023-11-30 14:05:26 26 4
gpt4 key购买 nike

作为 TDD 的初学者,我正在尝试编写一个测试,假设某个属性在 PropertyGrid(C#、WinForms、.NET 3.5)上的值已更改。

更改属性网格中对象的属性不会触发事件(很公平,因为它是 UI 引发的事件,所以我明白为什么更改拥有的对象可能对它不可见)。

在更改 SelectedNode 属性时让 TreeView 上的 AfterSelect 触发时,我也遇到了同样的问题。

我的单元测试可以调用一个函数来模拟 UI 事件将触发的代码,但这会使我的代码困惑,除非我将其公开,否则我将不得不在我正在测试的对象的相同项目,甚至类(同样,我认为这是困惑)。这对我来说似乎很难看,并且会遇到可维护性问题。

是否有进行这种基于 UI 的单元测试的约定

最佳答案

要对您的代码进行单元测试,您需要模拟 UI 界面元素的对象。您可以使用许多工具来执行此操作,我无法推荐一个。 MoQ 和 Rhino Mocks 之间有很好的比较 at Phil Haack's blog我发现有用并且可能对您有用。

如果您正在使用 TDD,需要考虑的一件事是为您的 View 创建一个界面,这将有助于 TDD 过程。为此有一个设计模型(可能不止一个,但这是我使用的一个)称为 Model View Presenter(现在分为 Passive View 和 Supervisor Controller)。遵循其中之一将使您的代码在未来更具可测试性。

此外,请记住,无法通过单元测试来测试 UI 本身。另一个答案中已经建议的测试自动化工具适用于此,但不适用于对代码进行单元测试。

关于c# - 从单元测试触发 UI 控制事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/98196/

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