gpt4 book ai didi

c# - 测试 WinForms 用户控件 - 子控件保持隐藏状态

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:53 26 4
gpt4 key购买 nike

我正在用 C# 编写一个 WinForms 用户控件并想对其进行测试(不是 TDD,我首先编写组件并使其运行,但我有点厌倦了总是发现错误,所以我现在想要测试)。我的问题是我无法使子控件(弹出菜单)在测试期间变得可见。 (我意识到它不会出现 - 我不希望它出现,但我仍然想验证它在正常运行时出现。)

相关测试代码如下:

  updater.Raise(it => it.StateChanged += null, AutoUpdaterState.Ok);

[注意:以上是将引发事件的 Moq 代码;它有效,只需忽略细节并认为“引发了将导致菜单变得可见的事件”。]

  Assert.IsTrue(sut.checkToolStripMenuItem.Visible);

控件中的相关代码如下:

      checkToolStripMenuItem.Visible = true;

问题是...我在这一行放置了一个断点,运行后 Visible 保持为 false。我知道这可能是因为我正在测试它,而菜单实际上并没有变得可见...这没关系,但我该如何测试呢?

最佳答案

在测试 UI 代码时,如果使用某种 MVC 模式(例如 WinForms 的 MVP)正确构建它通常会简单得多(如果您还没有这样做的话)。

编写这些测试时,您甚至不应该在测试项目中引用 WinForms。我通常在 View 上有一个方法,对于您的示例,它是 ShowPopupMenu()。我测试的是在某些情况下presenter会调用这个方法。具体的方法我不测试,因为我把这些简单的东西留给了UI,反正99%的逻辑都在presenter里;并显示弹出菜单需要一行代码...

但是,如果您没有 MVP,有一些库可以帮助您测试 WinForms,例如 NUnitForms .

关于c# - 测试 WinForms 用户控件 - 子控件保持隐藏状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592072/

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