我应该编写集成测试还是单元测试?

jun*_*ser 7 automated-tests

我有保存照片功能(存储在数据库,应用程序,让用户在选择一个目录来保存),以给定的directory.Now,这是行不通的correctly.I只是固定it.Now,我应该写单元测试或集成测试对于功能?

Chr*_*inn 18

对于您的情况,您希望编写集成测试以涵盖您提到的方案.我有关于这个主题完整帖子.但是,这是一个特定于您的问题的摘要版本:

在他的" 单元测试艺术"一书中,Roy Osherove描述了单元测试必须"值得信赖"的关键原则.从表面上看,这似乎相当明显.但是,这个基础突出了单元测试与集成测试之间的一些关键差异.

通过值得信赖的测试,您必须能够100%地信任结果.如果测试失败,您需要确定代码已损坏且必须修复.您不应该问"数据库是否已关闭?","连接字符串是否正常?","存储过程是否已修改?".通过询问这些问题,它表明您无法信任结果,并且您可能设计糟糕的"单元测试".

由于您的场景描述了具有类似多个依赖项的情况,因此您希望使用集成测试来覆盖它.再次,有关更多详细信息,请参阅此处的完整帖子.

祝好运!


Mic*_*rdt 8

集成测试和单元测试具有不同的范围和目的:

  • 单元测试与程序的其余部分隔离测试小块代码(如函数),理想情况下覆盖所有可能的边缘情况(如异常,空参数等)
  • 集成测试从用例的角度测试整个应用程序.它们永远不会涵盖所有边缘情况,但是它们可以解决代码部分之间的交互问题以及将它们连接在一起的粘合代码,单元测试通常会错过

对于单个功能,您实际上只能进行单元测试,您应该这样做.但是您也可以进行集成测试,该测试显示当用户按下某个按钮时,照片会写入目录,并且也可以在程序中打开.


Wil*_*ger 6

  • 集成测试帮你验证,如果你的软件正常工作.
  • 单元测试帮你找到为什么你的软件是打破.

单元测试在一定程度上也有助于实现第一个目标.此外,它还有几个优点:

  • 编写运行具有更小范围的单元测试通常更便宜.
  • 使用单元测试比集成测试更容易覆盖组件状态的组合爆炸.假设您有一个涉及三个组件的设置.它们每个都有3种不同的状态.然后集成测试整个设置将涉及检查3*3*3 = 27条件.对各个组件进行单元测试需要测试3 + 3 + 3 = 9个条件.(这是过于简单的,但你希望看到这一点.)

因此,单元测试通常比集成测试更受欢迎.但是,你真的离不开集成测试.集成测试应该是接受软件的基石.进行单元测试只能证明你有很多东西在做某事.集成测试证明您有可用的软件.