【问题标题】:When not to Use Integration Tests何时不使用集成测试
【发布时间】:2009-11-12 19:23:50
【问题描述】:
我正在编写一个应用程序,它使用 3rd 方库来实例化并在虚拟机上进行一些操作。
起初我正在为应用程序的每个功能编写集成测试。但是他们我发现这些测试并没有真正的帮助,因为我的环境必须处于确定状态,这使得测试变得越来越难以编写。我决定只进行单元测试和验收测试。
所以,我的问题......是/是否有方法或线索可以通知何时不使用集成测试? (或者我错了,在所有情况下都应该写)
【问题讨论】:
标签:
testing
tdd
integration-testing
【解决方案1】:
当您不打算将您的应用程序实际连接到任何“真实”的东西时;没有真正的容器、数据库、资源或实际服务。这就是集成测试应该验证的内容;一切都可以正常工作。
【解决方案2】:
集成测试非常适合测试具有明确定义且不太可能更改的输入和输出的完整系统。如果您的预期输入/输出经常变化,那么维护测试可能会成为维护挑战,或者更糟糕的是,您可能会选择不改进接口,因为升级集成测试可能需要大量工作。
【解决方案3】:
简单而简短的规则是:在集成测试中测试由于集成而中断的部分,并在单元测试中隔离测试其余部分。
您甚至可以hate integration tests。为只接受一个整数参数的函数编写单元测试已经够难了。状态(内部和外部(时间、外部系统))和输入的所有可能组合都可以使集成测试实际上是不可能的(对于一个体面的应用程序)。