Unit testing 我在哪里存储MVC/MVP和服务层单元测试?

Unit testing 我在哪里存储MVC/MVP和服务层单元测试?,unit-testing,model-view-controller,mvp,Unit Testing,Model View Controller,Mvp,在MVC/MVP风格的应用程序中,客户机应用程序程序集中有控制器/演示器类,然后是包含服务类的服务层程序集中,人们建议将单元测试存储在哪里 为了便于执行,最好有一个同时引用客户机和服务的测试程序集,并包含这两个方面的测试。但是,双重责任测试组件是否被认为是糟糕的设计 其他人在哪里存储他们的单元测试代码?我通常会为每个已测试的.NET程序集创建一个单元测试项目。让单元测试项目只与一个正在测试的系统(SUT)隔离是非常重要的。如果需要,您可以有多个单元测试项目来执行相同的SUT,但不能反过来 这样做

在MVC/MVP风格的应用程序中,客户机应用程序程序集中有控制器/演示器类,然后是包含服务类的服务层程序集中,人们建议将单元测试存储在哪里

为了便于执行,最好有一个同时引用客户机和服务的测试程序集,并包含这两个方面的测试。但是,双重责任测试组件是否被认为是糟糕的设计


其他人在哪里存储他们的单元测试代码?

我通常会为每个已测试的.NET程序集创建一个单元测试项目。

让单元测试项目只与一个正在测试的系统(SUT)隔离是非常重要的。如果需要,您可以有多个单元测试项目来执行相同的SUT,但不能反过来

这样做的原因是,如果您有一个执行多个SUT的单个单元测试项目,那么您将人为地将这两个SUT耦合在一起。这意味着您将永远无法在没有另一个SUT的情况下迁移其中一个SUT

在web应用程序的情况下,如果您不打算重用任何库,那么您可能会发现这些问题无关紧要,但可以想象,您意外地被要求基于与web站点当前使用的相同业务逻辑实现web服务。您的服务层听起来很适合代码重用,因此您可能希望在没有基于MVC的UI的情况下重用它

现在的问题是,您不能这样做,因为单个单元测试项目会拖累不必要的UI项目


SUT和它们的单元测试之间有一对一的关系只会让你的生活更轻松。

表达得很好-我完全同意你关于耦合问题的看法,但当时想不起来!