我的同事告诉我将我的控制器分开在一个单独的项目中,以使单元测试尽可能容易,他还告诉我为控制器项目和测试项目创建一个解决方案,以避免在进行单元测试时加载整个应用程序。在新项目中分离控制器是一种好方法吗?
4 回答
从我的角度来看,让你将控制器移出一个单独的项目有两件事要考虑,如果你这样做,那么它会迫使你思考如何解决低耦合问题,并且可以更容易地测试低耦合类比紧耦合类。
另一方面,将控制器与视图放在同一个项目中是合乎逻辑的,因为控制器通常知道视图。
如果您考虑可重用性,这里可能存在争议,因为控制器通常是“胶水”组件,这意味着它们中有很多布线。
在我看来,您应该始终至少将控制器与视图项目(通常是我的 Web 项目)分开,因为这个想法是控制器应该能够与任何视图一起使用(也许稍后您决定将它们用于例如 Windows 窗体项目)。它也使命名空间更加干净。
乍一看,这似乎是个好主意。在中间创建一个表示层并保持您的 MVC 项目仅包含视图,使其真正成为一个 UI 项目。另一方面,您可能会失去对视图的工具支持。由于您必须忽略所有警告,因此您必须确保所有视图都存在,并且对您的对象进行了强类型化。
我不明白在您的测试套件中引用您的 MVC 项目的担忧,因为无论如何您都可能会引入 MVC 命名空间。
我不确定这个问题是否有一个简单的是或否答案。我认为您的项目必须非常非常大才能对您的单元测试产生影响。我个人的意见是将控制器与视图和视图模型一起留在 Web 项目中。但是,我喜欢将模型移到单独的项目中。我这样做的原因与更简单的单元测试关系不大,而是在其他应用程序中重用数据访问(模型)。