N层架构和单元测试(使用Java)

时间:2011-01-12 17:05:30

标签: java unit-testing architecture

我想对建筑问题进行专家解释。想象一下Spring MVC webapp,带有验证API(JSR 303)。因此,对于请求,我有一个处理请求的控制器,然后将其传递给服务层,服务层传递给DAO。

这是我的问题。应该在哪一层进行验证,以及如何进行验证?

我的控制器必须处理基本验证(必填字段是空的吗?字段长度是否正常?等等)。然后服务层可以做一些涉及其他objets的tricker东西。 DAO根本没有验证。 但是,如果我想实现一些单元测试(即服务下面的测试层,而不是控制器),我最终会出现意外行为,因为一些验证应该在Controller层完成。由于我们不将其用于单元测试,因此存在问题。

处理此问题的最佳方法是什么?我知道没有普遍的答案,但你的个人经历非常受欢迎。

非常感谢。 问候。

1 个答案:

答案 0 :(得分:3)

在您的服务单元测试中,将您的测试数据制作成通过所有控制器级别验证检查 - 基本上假设控制器级别验证将完美运行,并且您的服务只会从控制器的角度接收有效的数据。然后,在控制器的单元测试中测试每个验证案例。最后,包括在两个级别上都无法验证的集成测试,并确保没有通过。