单元测试Winforms UI

SKG*_*SKG 5 c# unit-testing winforms

我正在为我的用户控件编写一个测试用例,它将提示使用MessageBox.Show进行用户操作,要求处理或取消操作.如何设计我的单元测试来模仿用户交互以继续?

我不想重构将逻辑移到中间层.这是获得用户同意并继续进行中间层呼叫的简单案例.此方案的任何帮助/想法重组UI也将有所帮助.

Jan*_*oom 7

单击按钮只不过是调用相应的click事件.所以你可能想围绕它建立你的测试.

更好的是(如果不是这样),将代码从前端移出,并围绕业务操作构建单元测试,否则单击按钮即可调用.

在作者编辑后进行更新
只要您不准备拆分,您就不会让它工作,您无法围绕"点击此处","点击此处"构建单元测试.想象一下以下代码:

private int MyFunction()
{
    bool insideVariable = false;
    if(insideVariable) 
        return 1;
    else
        return 2;
}
Run Code Online (Sandbox Code Playgroud)

永远无法对insideVariable设置为true的情况进行单元测试; 你可以:

  1. 重构您的代码,使return 1语句位于中间层的某个位置
  2. 重构,以便return 1语句是GUI中的方法.然后,您可以测试该功能.

应用程序前端应该很容易替换,因此不应该存储任何业务逻辑.单元测试只是生活在主GUI旁边的另一个前端.

  • +1 - 如果UI拥有足够的逻辑来复制其动作需要实际使用UI代码,那么UI包含太多逻辑.值得注意的是异常 - 在这方面,表示逻辑总是很棘手 - 但总的来说,可测试的代码并不存在于用户界面中. (2认同)