有没有人能够成功的单元测试方法所根据需要,联接到System.Windows.Forms.Form类?
我最近一直工作在C#WinForms应用程序,试图用一个MVC结构来构建它。 这是相当困难的,因为该框架是不是真的有这个内置的初衷。
但是,当你把单元测试混进去它变得更加强硬。 我一直在确保我的控制器没有连接到具体的视图类,这样我就可以使用存根/模拟进行单元测试。 但地方引用Form类是不可避免的,也需要进行测试这些方法。
我一直在使用起订量 ,因为它有一些很好的类型安全功能,并允许嘲弄具体类型。 但不幸的是,它并没有让我“期望”对一个具体类型既不是虚拟的还是抽象的方法或属性的调用。 而且,由于Form类是没有考虑建立子类,这是一个很大的问题。 我需要能够嘲笑Form类,以防止真正的窗户被创建,以“期待” ShowDialog的,例如。
所以我留下无法运行任何单元测试,做表格的子类,其中我的意见是过多交流。
有没有人在那里谁已经成功地进行单元测试这种类型的代码? 你是怎么做到的?
这是一些其他嘲讽框架才能解决? 将由其他嘲讽框架中使用基于字符串的方法受到同样的限制? 我可以写我自己的明确的长手mock类,或将缺乏虚拟成员阻止我能够抑制窗口的行为方式太是什么?
或者是有一些方法我都没有想到的,这样的形式,再加码的方法和琐碎复杂类最终构建我的班,这样我可以脱身没有明确的单元测试他们,没有我的良心打我为了它?