N层体系结构和单元测试(使用Java)
我想听听你对一个架构问题的专业解释。想象一个SpringMVCwebapp,带有验证API(JSR303)。对于请求,我有一个控制器来处理请求,然后将其传递给服务层,服务层传递给DAO层 这是我的问题。验证应在哪一层进行,以及如何进行 我的想法是控制器必须处理基本验证(必填字段是否为空?字段长度是否正常?等等)。然后,服务层可以做一些欺骗的事情,包括其他对象。DAO根本不进行验证。 但是,如果我想实现一些单元测试(即服务下的测试层,而不是控制器),我将以意外的行为结束,因为一些验证应该在控制器层中完成。由于我们不将其用于单元测试,因此存在一个问题 处理这个问题的最好方法是什么?我知道没有普遍的答案,但你的个人经历是非常受欢迎的 非常感谢。N层体系结构和单元测试(使用Java),java,unit-testing,architecture,Java,Unit Testing,Architecture,我想听听你对一个架构问题的专业解释。想象一个SpringMVCwebapp,带有验证API(JSR303)。对于请求,我有一个控制器来处理请求,然后将其传递给服务层,服务层传递给DAO层 这是我的问题。验证应在哪一层进行,以及如何进行 我的想法是控制器必须处理基本验证(必填字段是否为空?字段长度是否正常?等等)。然后,服务层可以做一些欺骗的事情,包括其他对象。DAO根本不进行验证。 但是,如果我想实现一些单元测试(即服务下的测试层,而不是控制器),我将以意外的行为结束,因为一些验证应该在控制器层
关于。在您的服务单元测试中,设计您的测试数据,就好像它通过了所有控制器级验证检查一样-基本上假设控制器级验证将完美工作,并且您的服务将只接收到从控制器角度看有效的数据。然后,在控制器的单元测试中测试每个验证案例。最后,包括在两个级别上都未通过验证的集成测试,并确保没有任何测试通过。在您的服务单元测试中,精心设计测试数据,就好像它通过了所有控制器级验证检查一样——基本上假设控制器级验证将完美工作,并且您的服务将只接收从控制器角度来看有效的数据。然后,在控制器的单元测试中测试每个验证案例。最后,包括在两个级别上都未通过验证的集成测试,并确保没有一个测试通过