C# 中的单元测试按钮 - .NET Visual Studio

本文关键字:NET Visual Studio 按钮 单元测试 | 更新日期: 2023-09-27 18:31:50

我有一个Windows表单应用程序,它只是一堆按钮。我希望能够使用类似 button1 的东西来测试它们。执行点击();在我的单元测试课上。

无论如何,可以在不为我的主程序中的每个按钮创建方法的情况下执行此操作,例如:public void TestButton1Click(){ button1.执行点击();}

由于某种原因,按钮变量不会显示在单元测试的上下文中。任何帮助不胜感激,谢谢

C# 中的单元测试按钮 - .NET Visual Studio

是的,您的按钮通常不适用于您的单元测试,因为它们会自动私有(在您的设计器中将它们更改为内部将起作用......直到你编译)。

一个微创和可行的选择是使用假货(https://msdn.microsoft.com/en-us/library/hh549175.aspx),但我只知道它们,没有使用过它们。

我通常如何测试 WinForms 按钮是使用 Humble 对象模式 (http://xunitpatterns.com/Humble%20Object.html),基本上我的按钮中的所有逻辑都在我可以轻松测试的单独对象中。然后我所有的按钮就是调用那个对象。如果我的代码变得复杂,需要做各种视觉更新,那么在这一点上转向 MVP 架构就很基本了。

执行

按钮单击的扩展方法

public static class TestHelper{
   public static Results ClickMe (this Button button){
     button.Click();
     var results = GetResults(button);
     return results;
   }
}

在运行时,必须具有按钮的地址。像这样使用它。

var results =this.ButtonName.ClickMe();
if(results.Ok == true) { //everything worked }

结果类是要创建的任何内容,用于显示单击的响应。

单元测试

通常,在单元测试中,您不必转到 GUI 层,而是测试按钮单击事件处理程序。