使用NUnit测试Windows窗体逻辑

时间:2010-02-04 09:15:03

标签: c# winforms unit-testing nunit

我正在进行单元测试,我想知道是否可以使用NUnit测试对话框或表单的某些特殊功能。我已经尝试了NUnitForms,但它缺乏良好的文档,似乎没有人在维护该项目。这是真的吗?

如果您有测试Windows窗体的经验,请以正确的方式指出。任何意见或信息表示赞赏。谢谢!

4 个答案:

答案 0 :(得分:3)

自动GUI测试往往非常脆弱,我猜这就是为什么不维护NUnitForms(如果这是真的)。​​

避免痛苦,并考虑应用Model View ControllerModel View ViewModel等设计模式。这将允许您以更加健壮的方式对UI逻辑进行单元测试。

答案 1 :(得分:3)

我遇到了与NUnitForms相同的问题。我可以启动一个表单并单击一个按钮,但我无法弄清楚如何使对话框工作,我根本找不到它。 我认为这个博客最有用: http://blogs.msdn.com/john_daddamio/archive/2006/11/06/getting-started-with-nunitforms.aspx

我不得不在我的app.config中重新映射NUnitForms程序集,以使其能够使用这样的最新版本:

<configuration>
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly>
        <assemblyIdentity name="nunit.framework"
          publicKeyToken="96d09a1eb7f44a77"
          culture="neutral" />
        <bindingRedirect oldVersion="2.2.7.0" newVersion="2.5.2.9222" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

 (http://duncanjasmith.blogspot.com/2007/08/using-nunitforms-with-nunit-framework.html

我希望这个帖子可以帮助我,但我仍然可以尝试白色项目(http://www.codeplex.com/white)。

答案 2 :(得分:1)

我使用作为.Net 3.0及更高版本的一部分的UI自动化框架取得了很大的成功。我写了tutorial,可能会帮助你入门。

答案 3 :(得分:0)

有一个非常好且易于理解的Ayende生成的MVC框架示例,请参阅他的博客上的this entry了解更多详情。通过在您的应用程序中添加一个非常轻量级的基础结构,可以自动将按钮连接到事件上。

通过使用这种类型的框架,您的视图中不会有任何逻辑,仅在您的Presenter中。然后,您可以轻松地对逻辑进行单元测试,而无需触及WinForms。

我已经开始使用Effectus到.NET 2.0和WinForms的端口,如果你感兴趣,它是here