Модульное тестирование привязки данных в System.Windows.Forms - PullRequest
0 голосов
/ 20 января 2009

Я столкнулся с проблемой во время модульного тестирования моих форм.

Проблема в том, что привязки данных просто не работают, когда форма не видна.

Вот пример кода:

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".

Есть предложения?

1 Ответ

2 голосов
/ 20 января 2009

Я думаю, что вы ответили на свой вопрос - для того, чтобы произошло событие изменения свойства (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"]);
...