Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms System.Windows.Forms中的单元测试数据绑定_Winforms_Unit Testing_Data Binding - Fatal编程技术网

Winforms System.Windows.Forms中的单元测试数据绑定

Winforms System.Windows.Forms中的单元测试数据绑定,winforms,unit-testing,data-binding,Winforms,Unit Testing,Data Binding,我在对表单进行单元测试时遇到了一个问题 问题在于,当表单不可见时,数据绑定根本不起作用 下面是一些示例代码: Data = new Data(); EdtText.DataBindings.Add( new Binding("Text", Data, "Text", false, DataSourceUpdateMode.OnPropertyChanged)); 后来: Form2 f = new Form2(); f.Data.Text = "Test 1"; f.

我在对表单进行单元测试时遇到了一个问题

问题在于,当表单不可见时,数据绑定根本不起作用

下面是一些示例代码:

Data = new Data();
EdtText.DataBindings.Add(
    new Binding("Text", Data, "Text", false, 
        DataSourceUpdateMode.OnPropertyChanged));
后来:

Form2 f = new Form2();
f.Data.Text = "Test 1";
f.EdtText.Text = "Test 2";
f.Data.Text = "Test 3";
最后,组件的值为f.EdtText.Text=“测试2”和f.Data.Text=“测试3”,但预期值应同时为“测试3”


有什么建议吗?

我想你回答了你自己的问题——为了发生属性更改事件(
TextChanged
),必须显示控件。您的单元测试可以执行如下操作:

Form2 f = new Form2();
f.Show();
Thread.Sleep(2000); // give the Form time to open
f.Data.Text = "Test 1";
Assert.AreEqual("Test 1", f.EditText.Text);
f.Close();
您可能不想公开表单组件,而是想使用来获取表单控件:

TextBoxTester tb = new TextBoxTester("EditText1");
Assert.AreEqual("Test 1", tb["Text"]);