项目的哪个部分首先要测试?

时间:2014-03-11 13:00:36

标签: unit-testing asp.net-mvc-5 service-layer

我想在我的生活中写下第一次单元测试。

目前,我正在开发新的ASP.NET MVC 5项目。这是简单的工作流程系统。我的项目包含4层:

  • Presentaton层(MVC项目)
  • 基础架构层(包含存储库和ORM)
  • 域(包含POCO类和业务逻辑接口)
  • 服务层(实现域接口)

我相信,我首先需要测试服务层。是对的吗?我应该先测试哪一层?

2 个答案:

答案 0 :(得分:4)

没有一种正确的方法,但最常见的技术是

  • 自上而下,也称为Outside-In。在这里,您从外层开始,继续前进。
  • 底向上即可。在这里,您从组成构建块开始,并将它们组装到工作系统中。

正如Code Complete所描述的那样,交替使用双重方法实际上可能是有益的,因为你从做一件事中学到的东西,可以帮助你更好地理解你在另一端需要做什么,反之亦然。我经常做一些Outside-In,然后是一些Bottom-Up,然后是一些Outside-In等等。

答案 1 :(得分:3)

根据Mark Seemann's answer,您可以先从UI图层进行测试,然后使用数据图层进行测试,反之亦然。

谁负责该项目?项目的哪个部分对业务至关重要?而不是“横向”跨越每一层测试,“垂直”测试所有层的特定功能。

这为您提供了基于业务优先级的覆盖范围的好处,您可以在开始测试每个功能时应用所有层中所需的可测试性更改或技术。

由于您已经编写了代码,因此请准备重构某些代码以使其更易于测试(例如,设置依赖注入以隔离代码以进行单元测试)并记下这些更改以帮助设计将来的可测试性。