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