c# – 使用UI控件的单元测试方法

前端之家收集整理的这篇文章主要介绍了c# – 使用UI控件的单元测试方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在编写一些方法,对表单控件进行一些基本操作,例如TextBox,GroupBox,这些操作是通用的,可以在任何应用程序中使用.

我开始编写一些单元测试,只是想知道我应该使用System.Windows.Forms中的实际表单控件还是我应该模拟我试图测试的部分.例如:

假设我有这个控制方法,如果它是一个文本框,它将清除文本属性,如下所示:

public static void clearall(this Control control)
        {
            if (control.GetType() == typeof(TextBox))
            {
                ((TextBox)control).Clear();
            }
        }

然后我想测试这个方法所以我做这样的事情:

[TestMethod]
        public void TestClear() 
        {
            List<Control> listofcontrols = new List<Control>();
            TextBox textBox1 = new TextBox() {Text = "Hello World" };
            TextBox textBox2 = new TextBox() { Text = "Hello World" };
            TextBox textBox3 = new TextBox() { Text = "Hello World" };
            TextBox textBox4 = new TextBox() { Text = "Hello World" };

            listofcontrols.Add(textBox1);
            listofcontrols.Add(textBox2);
            listofcontrols.Add(textBox3);
            listofcontrols.Add(textBox4);

            foreach (Control control in listofcontrols)
            {
                control.clearall();
                Assert.AreEqual("",control.Text);
            }
        }

我应该将System.Window.Forms的referance添加到我的单元测试并使用真正的TextBox对象吗?或者我做错了吗?

注意:上面的代码只是一个例子,我没有编译或运行它.

解决方法

如果您尝试通过模拟与UI控件的交互来对应用程序逻辑进行单元测试,则应使用 MVC pattern进行一些抽象.然后您可以只使用存根视图并从单元测试中调用控制器方法.

如果它是您尝试进行单元测试的实际控件,那么您就拥有了我.

猜你在找的C#相关文章