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

Unit testing 首先测试项目的哪个部分?,unit-testing,asp.net-mvc-5,service-layer,Unit Testing,Asp.net Mvc 5,Service Layer,我想写我生命中的第一个单元测试 目前,我正在开发新的ASP.NETMVC5项目。这是一个简单的工作流系统。我的项目包含4个层: 呈现层(MVC项目) 基础结构层(包含存储库和ORM) 域(包含业务逻辑的POCO类和接口) 服务层(由域接口实现) 我相信,我首先需要测试服务层。是这样吗?我应该先测试哪一层 没有单一的正确方法,但最常用的技术是 自上而下,也称为。在这里,您从外层开始,以自己的方式进入 自下而上。在这里,您从组成的构建块开始,并将它们组装到一个工作系统中 如前所述,交替使用双

我想写我生命中的第一个单元测试

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

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

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

没有单一的正确方法,但最常用的技术是

  • 自上而下,也称为。在这里,您从外层开始,以自己的方式进入
  • 自下而上。在这里,您从组成的构建块开始,并将它们组装到一个工作系统中
如前所述,交替使用双重方法实际上是有益的,因为你从做一件事中学到的东西可以帮助你更好地理解你在另一端需要做什么,反之亦然。我经常做一些由外而内的测试,然后做一些由下而上的测试,然后再做一些由外而内的测试,等等。

根据,您可以先从UI层进行测试,然后使用数据层完成测试,或者反过来

谁负责这个项目?项目的哪一部分是业务关键型的?不要“水平”测试每一层,而是“垂直”测试所有层的特定功能

这为您提供了基于业务优先级的覆盖的好处,并且您可以在开始测试每一项功能时,在所有层上应用您需要进行的任何可测试性更改或技术

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