测还是不测?
Test or not test?
今天我开始了一个项目,我必须将后端分为两部分,我不知道后端到底做了什么,只是我必须将特定服务移动到新的 spring、jersey、maven多模块项目。
所以,移动的任务真的很简单,现在是时候编写测试了。之前,该项目没有任何测试。
当我开始从我的业务对象编写 JUnit 时,我发现大多数服务仅使用 DAO 执行基本操作,例如 getAll、get、save、update 和 delete。其他服务得到业务验证,但不是comlpex。
所以问题比较理论化:
我是否应该编写 JUnits 来测试将被模拟的简单 DAO get(无集成测试)这样做的好处是什么?
这将是对简单的 DAO get、getAll 或创建(之前没有任何验证要执行的创建)进行集成测试的正确方法
单元和集成测试是针对开发人员的,所以如果您认为某些开发人员不会从该测试中受益,请不要编写它。还要考虑到测试验证的是行为,而不是代码,所以如果你没有看到任何需要测试的行为——不要花时间。
在你的情况下,我最多会为服务编写集成测试,也许还会为 DAO(如果没有 ORM)编写集成测试。
无论如何,您问题的正确答案取决于您需要为项目提供的质量水平、团队规模、破坏性代码更改的可能性等。
两个例子:
1) CRUD 风格的小型站点管理面板,只有一个开发人员同时引入更改,几乎没有业务逻辑。错误的存在是非关键的。
在这种情况下,我不会花时间进行任何测试 - 很可能您需要专注于其他事情(例如客户端)。
2) 您正在启动一个复杂的项目,该项目目前采用 CRUD 风格,但存在远距离 services/DAOs 之间的交互,业务逻辑有时会变得复杂。 Team is rapidly growing/changing, 不止一个人参与,新开发者很容易理解系统是如何工作的。错误的存在对业务不利。
在这种情况下,我至少会从服务的集成测试开始。
今天我开始了一个项目,我必须将后端分为两部分,我不知道后端到底做了什么,只是我必须将特定服务移动到新的 spring、jersey、maven多模块项目。
所以,移动的任务真的很简单,现在是时候编写测试了。之前,该项目没有任何测试。
当我开始从我的业务对象编写 JUnit 时,我发现大多数服务仅使用 DAO 执行基本操作,例如 getAll、get、save、update 和 delete。其他服务得到业务验证,但不是comlpex。
所以问题比较理论化:
我是否应该编写 JUnits 来测试将被模拟的简单 DAO get(无集成测试)这样做的好处是什么? 这将是对简单的 DAO get、getAll 或创建(之前没有任何验证要执行的创建)进行集成测试的正确方法
单元和集成测试是针对开发人员的,所以如果您认为某些开发人员不会从该测试中受益,请不要编写它。还要考虑到测试验证的是行为,而不是代码,所以如果你没有看到任何需要测试的行为——不要花时间。
在你的情况下,我最多会为服务编写集成测试,也许还会为 DAO(如果没有 ORM)编写集成测试。
无论如何,您问题的正确答案取决于您需要为项目提供的质量水平、团队规模、破坏性代码更改的可能性等。
两个例子:
1) CRUD 风格的小型站点管理面板,只有一个开发人员同时引入更改,几乎没有业务逻辑。错误的存在是非关键的。
在这种情况下,我不会花时间进行任何测试 - 很可能您需要专注于其他事情(例如客户端)。
2) 您正在启动一个复杂的项目,该项目目前采用 CRUD 风格,但存在远距离 services/DAOs 之间的交互,业务逻辑有时会变得复杂。 Team is rapidly growing/changing, 不止一个人参与,新开发者很容易理解系统是如何工作的。错误的存在对业务不利。
在这种情况下,我至少会从服务的集成测试开始。