【发布时间】:2011-12-07 23:45:07
【问题描述】:
我正在编写单元测试来测试在 GUI 中键入的数据是否经过验证和正确记录。目前我正在使用这样的代码:
using (MyControl target = new MyControl())
{
PrivateObject accessor = new PrivateObject(target);
TextBox inputTextBox = (TextBox)accessor.GetField("InputTextBox");
string expected, actual;
expected = "Valid input text.";
inputTextBox.Text = expected;
// InputTextBox.TextChanged sets FieldData.Input
actual = target.FieldData.Input;
Assert.AreEqual(expected, actual);
}
但我宁愿使用 Validated 事件而不是 TextChanged 事件。
using (MyControl target = new MyControl())
{
PrivateObject accessor = new PrivateObject(target);
TextBox inputTextBox = (TextBox)accessor.GetField("InputTextBox");
string expected, actual;
bool valid;
expected = "Valid input text.";
inputTextBox.Text = expected;
valid = inputTextBox.Validate();
// InputTextBox.Validating returns e.Cancel = true/false
// InputTextBox.Validated sets FieldData.Input
Assert.IsTrue(valid);
actual = target.FieldData.Input;
Assert.AreEqual(expected, actual);
}
如何在文本框或任何其他支持 Validated 事件的控件上调用验证?我应该写什么来代替inputTextBox.Validate()?我对 C# 和 VB.Net 很熟悉。
【问题讨论】:
标签: .net winforms validation invoke