我正在进行单元测试,我想知道是否可以使用NUnit测试对话框或表单的某些特殊功能。我已经尝试了NUnitForms,但它缺乏良好的文档,似乎没有人在维护该项目。这是真的吗?
如果您有测试Windows窗体的经验,请以正确的方式指出。任何意见或信息表示赞赏。谢谢!
答案 0 :(得分:3)
自动GUI测试往往非常脆弱,我猜这就是为什么不维护NUnitForms(如果这是真的)。
避免痛苦,并考虑应用Model View Controller或Model 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。