gpt4 book ai didi

c# - 如何从测试类引发 keyEvent

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:01 24 4
gpt4 key购买 nike

我创建了一个自定义文本框,它验证输入是否对输入无效时显示的文本进行一些操作。我有 onkeypress() 和 ontextchanged() 事件来验证输入。我正在尝试使用 NUnit 测试此类。我的问题是如何从测试类触发 onKeyPress 事件。

public partial class InputDecimalQuantityTextBox : TextBox
{
#region private
//private variables
#endregion private

#region constructor
/// <summary>
///
/// </summary>
public InputDecimalQuantityTextBox()
{
InitializeComponent();
CurrentDecimalSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
DecimalSeparatorList = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Select(ci => ci.NumberFormat.NumberDecimalSeparator)
.Distinct()
.ToList();
ignoreOnTextChanged = false;
pasting = true;
}

#endregion constructor

#region events
/// <summary>
/// Validate the input includes only numbers and allowed charaters(% and decimal separator)
/// decimal separator can be a "." or "," based on region
/// </summary>
/// <param name="e"></param>
protected override void OnKeyPress(KeyPressEventArgs e)
{
pasting = false;
e.Handled = !ValidKeyPressed(e.KeyChar);

}

/// <summary>
/// Clear textbox if the text is invalid
/// </summary>
/// <param name="e"></param>
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);

if (ignoreOnTextChanged)
{
ignoreOnTextChanged = false;
return;
}

ValidateAndFormatInput();

SelectionStart = Text.Length;
pasting = true;
}
#endregion events

private bool ValidKeyPressed(char InputCharacter)
{
bool isValid = true;

if (!Char.IsDigit(InputCharacter))
{
isValid = false;

if (!ValidDecimalSeparator(InputCharacter))
{
isValid = ValidateInput(InputCharacter);
}
}

return isValid;
}
}

最佳答案

好吧,我会给你一些建议,你为什么要对表单进行单元测试?我认为如果您的演示文稿和您的业务逻辑分离得很好,您将只需要为您的业务逻辑创建单元测试,这将是一些单独的类,当您确定它们是正确的时,那么当表单使用业务类时您将确定演示文稿工作正常,因此无需深入研究复杂的单元测试窗口窗体,只需为您的业务创建一个干净且独立的逻辑,以便万一您将桌面应用程序(例如)转移到 Web,那么您可以重用这些经过测试的类容易地。如果您想确保表单 UI 按预期工作并且事件已正确附加,您可以检查将测试一般功能的自动化 UI 测试,但我认为这在复杂的 UI 应用程序中会很有效。

关于c# - 如何从测试类引发 keyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com