【问题标题】:Unit-testing data binding in System.Windows.FormsSystem.Windows.Forms 中的单元测试数据绑定
【发布时间】:2009-01-20 00:46:09
【问题描述】:

我在对表单进行单元测试时遇到问题。

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

下面是一些示例代码:

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 = "Test 2" 和 f.Data.Text = "Test 3",但预期值应该都是 "Test 3"。

有什么建议吗?

【问题讨论】:

    标签: winforms unit-testing data-binding


    【解决方案1】:

    我想你回答了你自己的问题——为了让属性更改事件 (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();
    

    您可能希望使用NUnitForms 来获取表单控件,而不是公开表单组件:

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

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 2010-09-24
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多