加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:29:26 所属栏目:百科 来源:网络整理
导读:我目前正在编写一些方法,对表单控件进行一些基本操作,例如Textbox,Groupbox,这些操作是通用的,可以在任何应用程序中使用. 我开始编写一些单元测试,只是想知道我应该使用System.Windows.Forms中的实际表单控件还是我应该模拟我试图测试的部分.例如: 假设我有
我目前正在编写一些方法,对表单控件进行一些基本操作,例如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进行一些抽象.然后您可以只使用存根视图并从单元测试中调用控制器方法.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读