我读了很多关于单元测试和集成测试的内容,单元测试部分我理解得相当好-隔离测试对象,使用接口模拟依赖项并注入这些依赖项。(或者使用seams注入可测试的行为)。
然而,即使在搜索之后,对我来说仍然是一个谜的东西是集成测试。每个博客和链接都谈到了一起测试各种组件,做什么和不做什么,CI服务器等,但没有太多关于如何做到这一点的解释。
集成测试是自动化的吗?或者这是手动操作?如果它是自动化的,我是否要用我的应用程序所用的本地语言将其编写为代码?如何检查或验证集成测试是否按预期工作?
例如,如果我有4个服务(一个套接字客户端、一个套接字服务器、一个数据库和一个Web应用程序),我想对这4个服务如何相互交互进行一些集成测试。我到底该怎么做呢?我知道将涉及一些虚拟数据,但是我的集成测试的哪一部分是检查系统是否正常工作?这部分对我来说真的很不清楚。
发布于 2018-01-10 06:01:26
正如您所说的单元测试,您需要隔离测试中的对象,并使用接口模拟依赖项并注入这些依赖项...
集成测试不会隔离单元...您可以测试两个或更多部分(但是您不应该有广泛的集成测试,这两个测试场景都不适合)。集成测试的一个例子是使用数据库测试你的代码,你可能需要用它来启动数据库并清理它,以便进行可重复的测试。
您还可以进行接口测试(例如,客户端执行和与服务器的集成)等等。
不要忘记,这种测试有一个缺点,它们更慢,也更难维护,但它们与单元测试的目的不同,单元测试的目的是检查具有真正依赖项的单元是否按预期工作。
因此,总而言之,如果你在没有完全隔离单元的情况下编写一个测试,那么它是一个集成测试,由于它的性质,最好通过单元测试来测试代码的逻辑,并在需要测试单元之间的交互时保留较少的集成测试。
您也可以查看这个很好的介绍https://softwareengineering.stackexchange.com/questions/48237/what-is-an-integration-test-exactly
来自“实用程序员”的一个有趣的定义:集成测试表明系统的主要部分可以很好地协同工作
https://stackoverflow.com/questions/48176991
复制相似问题