我阅读了很多关于单元测试和集成测试的内容,以及我理解的单元测试部分 - 隔离了测试对象,并使用接口模拟出依赖关系并注入它们。 (或使用接缝注入可测试的行为)。
然而,即使在搜索之后,对我来说仍然是一个神秘的东西是集成测试。每个博客和链接都会讨论如何将各种组件一起测试,不做和不做,CI服务器等等,但对于如何完成这项工作的方式并没有太多解释。
集成测试是否自动化?或者这是手动的努力?如果它是自动的,我是否可以用我的应用程序所在的本机语言编写代码?如何检查或验证集成测试是否按预期工作?
例如,如果我有4个服务(套接字客户端,套接字服务器,数据库和Web应用程序),我想对这4个服务如何相互交互进行一些集成测试。我究竟该如何处理这个问题?我知道会涉及一些虚拟数据,但是我的集成测试的哪一部分正在检查系统是否正常工作?这部分对我来说真的不清楚。
答案 0 :(得分:1)
正如你所说的单元测试,你需要隔离被测对象,并使用接口模拟出依赖关系并注入它们......
集成测试没有隔离单元......你可以测试两个或更多部分(但你不应该有广泛的集成测试适合既不是大测试场景)。集成测试的一个示例是使用数据库测试您的代码,您可能需要启动数据库并清理它以进行可重复的测试。
您也可以进行接口测试(例如客户端执行和与服务器的集成)等等。
不要忘记这些测试有一个缺点,它们更慢,更难维护,但它们与单元测试有不同的目的,即检查单元是否按预期与真正的依赖关系一起工作。
因此,如果你在没有完全隔离单元的情况下编写测试就会进行总结,这是一个集成测试,由于它的性质,通过单元测试来测试代码的逻辑会更好,并且保留更少的集成测试时需要测试单元之间的相互作用。
您还可以查看这篇精彩的介绍https://softwareengineering.stackexchange.com/questions/48237/what-is-an-integration-test-exactly
一个有趣的定义来自"务实的程序员":集成测试表明系统的主要部分可以很好地协同工作