【问题标题】:How to unit test winform keypress and button events如何对winform按键和按钮事件进行单元测试
【发布时间】:2019-01-23 06:53:48
【问题描述】:
private void Phonenumber_KeyPress(object sender, KeyPressEventArgs e)
{
    char ch = e.KeyChar;
    if (!char.IsDigit(ch) && (ch != 8))
    {
        e.Handled = true;
    }
}

private void Submit_Click(object sender, EventArgs e)
{
    //sql commands
    messagebox.show("data added successfully");
}

【问题讨论】:

  • 嘿伙计,我不会测试那个。谷歌关于“我应该对哪些代码进行单元测试”。
  • 最好能找到一些最佳实践或样本,而不是仅仅询问别人的想法
  • 基本上,这可以不相对于按钮进行测试。我的意思是,你可以有一些方法,例如 ProcessUserInput(char someChar) 并测试它
  • 因为要测试涉及 UI 框架的代码(Winforms),所以需要启动应用程序,打开表单,在文本框中输入文本并按下按钮,然后断言带有预期消息的消息框有被显示。您可以查看 TestStack.White 框架,它提供了执行上述所有步骤的 API。
  • 另一种方法是手动完成。根据要求,它可以更快;)

标签: c# .net winforms unit-testing


【解决方案1】:

最好添加一个可测试的方法,然后在 evant 中调用该方法,如下所示(代码仅用于示例,未在 ide 中测试)

private void Phonenumber_KeyPress(object sender, KeyPressEventArgs e)
{
     e.Handled= IsWrongkeypress(e.KeyChar)
}

public Boolean  IsWrongkeypress(char ch)
        {
            Boolean ishandled =false ;

            if (!char.IsDigit(ch) && (ch != 8))
            {
                ishandled = true;
            }

            return ishandled;
        }

【讨论】:

  • 它正在影响其他代码..请您分别编写..main方法和测试用例代码
  • 有什么效果你能ellaborate.so我可以帮忙
  • 它没有任何影响..我已经解决了...但是你能写代码来单元测试电话号码按键事件吗..你写的上面的代码令人困惑..写两个我的代码需要更改单元测试的主要方法和代码..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多