Rob*_*lls 6 testing integration-testing unit-testing
天儿真好,
我正与一群离岸开发人员合作,他们一直在使用单位测试这个术语.
他们的QA文档讨论了编写单元测试然后执行系统的单元测试.
这不符合我对单元测试的解释.
我习惯将单元测试作为测试或测试套件,用于练习单个类,通常是黑盒子.被测试的类可能需要实现包含其他类,但通常它是由单元测试执行的单个类.
然后你有系统功能测试,整合测试,验收测试等.
我想知道这对我来说有点迂腐吗?或者这是你在提到单元测试和单元测试时的想法?
编辑:Rob Wells.我需要澄清的是,从黑匣子的角度来看这种测试只是一个方面.当使用模拟对象来验证内部行为时,您实际上是从白盒的角度进行测试,因为您知道要在框内发生什么.
Eli*_*lie 10
开发人员通常使用单元测试来测试代码的隔离部分.它们涵盖边界案例,错误案例和正常案例.它们旨在证明有限代码段的正确性.如果你的所有单元测试都通过了,那么你已经证明了你的孤立代码片段能够完成他们应该做的事情.
当您进行集成测试时,您正在查看端到端的情况,以查看已通过单元测试的所有段是否一起工作.功能测试检查代码是否满足指定的要求.验收测试由最终用户完成,以确定他们是否批准最终产品.
我尝试实现单元测试来仅测试单个方法。并且我努力为我正在测试的方法所使用的依赖类和方法创建“模拟”类......以便该方法中的代码的执行实际上不会调用单元中其他方法中的代码测试不应该是“测试”(这些方法还有其他单元测试)这样,单元测试的失败可靠地表明单元测试正在测试的方法失败......
模拟类旨在“模拟”依赖类的接口和行为,以便我正在测试的方法可以调用它们,并且它们将根据系统要求以标准的、定义良好的方式运行。为了使这种方法发挥作用,必须在定义良好的接口上调用此类依赖类及其方法,以便“测试程序”进程可以将依赖类的模拟版本“注入”到正在测试的类中实际生产版本.... 这有点像称为“依赖注入”或“控制反转”(IOC)的常见设计模式
市场上有多种第三方工具可以帮助您实现这种模式。我听说过一种叫做“Rhino-Mock”或类似的东西......
编辑:罗布·威尔斯。@查尔斯。谢谢你。我忘记使用模拟对象来完全替换使用除正在测试的类之外的其他类。
在您提到模拟对象后,我记得的其他几件事是:
有关更多信息,请参阅 Martin Fowler 的论文“ Mocks Aren't Stubs ”和 The Pragmatic Programmers 的文章“ Mock Objects ”