【发布时间】:2013-04-05 11:49:18
【问题描述】:
我们在应用程序中使用 n 层架构。 假设我们使用 3 层应用程序并使用 MVC 模式作为表示层,应该测试哪个层? 如何在我的应用程序中找到可测试性点?
- 表示层?
- 业务层
- 数据层
- 全部?
【问题讨论】:
标签: unit-testing testing n-layer
我们在应用程序中使用 n 层架构。 假设我们使用 3 层应用程序并使用 MVC 模式作为表示层,应该测试哪个层? 如何在我的应用程序中找到可测试性点?
【问题讨论】:
标签: unit-testing testing n-layer
只测试你想确保工作的层。以上所有 3 项似乎都是重要的工作。你不想删除它们中的任何一个。
试图在现有软件中找到未针对其设计的可测试性点可能是一项挑战。有一本好书,Working Effectively with Legacy Code,其中遗留被定义为没有测试的代码,它谈到了这个问题。基本上,如果您不为可测试性而设计,则很难将其硬塞进去,您可能需要重构。
诀窍是在代码中添加测试基础设施:模拟、存根和其他测试组件,以允许您仅隔离被测位。这在您测试数据库时很有帮助,您真的不想运行真正的查询,这将花费太长时间并且您希望测试快速。依赖注入对于更静态的语言(如 C++/C 和 Java)很有帮助。
【讨论】:
在单元测试的上下文中,什么是“单元”?它是你识别为一个单元的任何东西,是你代码中最小的可测试部分。
如今,大多数人选择类或方法作为他们的单位。如果您这样做,您的所有层都将包含您可以进行单元测试的单元,因此您的问题的答案是测试所有这些。
【讨论】: