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