我目前正在编写一些方法,对表单控件(例如文本框、组框)执行一些基本操作,这些操作是通用的,可以在任何应用程序中使用。
我开始编写一些单元测试,只是想知道我应该使用 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 的引用添加到我的单元测试中并使用真正的 Textbox 对象吗?或者我做错了?
注意:上面的代码只是一个示例,我没有编译或运行它。
如果您尝试通过模拟与 UI 控件的交互来对应用程序逻辑进行单元测试,则应该使用MVC模式 http://en.wikipedia.org/wiki/Model-view-controller。然后,您可以拥有一个存根视图并从单元测试中调用控制器方法。
如果您正在尝试对实际控件进行单元测试,那么您就找到了我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)