首页 > 解决方案 > 为什么仅在调试测试时,单元测试中的 Form.CanFocus 为 false?

问题描述

在单元测试中, aForm的属性在调试测试和运行测试时CanFocus具有值。falsetrue

简化的测试代码如下:

// Arrange
Form f = new Form();

// Act
f.Show();
Application.DoEvents();

// Assert
// The following LOC:
// Debugging the test? Fails. Running the test? Passes.
Assert.IsTrue(f.CanFocus);

我还尝试将这些行直接放在上面f.Show()

f.Shown += delegate (object sender, EventArgs e)
{
    f.Activate();
};

据我所知,不应该检查直接 UI 方法,但我仍然对上述情况感到好奇。

更新:我检查并在调试模式下断言的那一刻,f具有 properties IsHandleCreatedVisibleEnabled设置为true. 我还看到在调试测试时,窗口实际上是不可见的。

情况是我正在为应该集中控制的方法进行单元测试。仅当创建控件 ( ) 并且其属性设置为时,该方法才使用控件自己的属性HasFocus(将其设置为 ) 。我想知道,在最好的情况下,这个方法的单元测试应该包括什么。true!= nullIsDisposedfalse

标签: c#winformsunit-testingmstest

解决方案


推荐阅读