当前位置: 首页 > 创领中心 > 网络优化

什么是Testcontainers 为什么你应该关心

  • 网络优化
  • 2024-11-15

Testcontainers 缩小了设置和撤除测试环境的摩擦,简化了测试,从而成功更自信、更强健的开发。

在现代软件开发中,随着散布式系统和微服务架构的继续趋向,以及渺小的集成界面,编写软件也象征着与其余系统集成。集成测试是确保被测系统继续正确性的绝佳工具,并且可以在开发周期中提供系统行为的极速且继续的反应。

但是,集成测试通常须要外部依赖项,例如数据库、信息代理或 Web 主机,一切这些依赖项都有自己的性能和正确运转的不凡性。传统上,治理这些依赖项很费事,容易产生不分歧,并且难以在不同机器上复制。

从历史上看,这使得集成测试因编写和保养老本高而声名狼藉。你要么必定遵照或者过期的文档以费劲的手动形式设置环境(最终只获取一个稍微损坏的环境),要么经常使用集中保养的共享测试环境,这通常会造成测试污染。

这就是Testcontainers的用武之地。我的共事Oleg Šelajev将在 All Things Open 2024 上以“制造你自己的 Testcontainers 模块,既幽默又无利可图!”为题的演讲中展现这一点。

了解 Testcontainers

Testcontainers 是一个开源库,用于提供一次性性、轻量级的数据库、信息代理、Web 阅读器或简直可以在 Docker 容器中运转的任何物品的实例。经过应用Docker依据须要从你的代码库中启动这些服务的轻量级、隔离的实例,Testcontainers 处置测试和开发时期的环境治理疑问。

Testcontainers 准许开发人员经常使用基础设备即代码 (IaC)方法,以最小的上班量创立牢靠且可重复的测试和开发环境。它经常使用相熟的言语编写消费和测试代码,并协助确保代码针对实在、分歧的服务启动测试。这种方法缩小了设置和撤除测试环境的摩擦,并使测试更牢靠、更容易保养。关于开发人员来说,Testcontainers 是一款扭转游戏规定的产品,它简化了测试环节,并成功了更自信、更持重的开发。

清算

Testcontainers 还会智能清算它创立的一切Docker资源,确保你的系统在运转测试后坚持整洁。此清算环节与你正在经常使用的测试框架(例如 JUnit)无缝集成,其中容器会在测试执行后智能中止并删除。

此外,Testcontainers 依赖于一个名为Ryuk的公用辅佐容器,它会监督并确保一切资源都获取正确清算,即使在测试进程或者解体或异常中断的状况下也是如此。经过将此清算环节绑定到测试进程的生命周期,并经常使用 Ryuk 作为监督程序,Testcontainers 保障不会留下任何杂散容器、网络或卷,从而坚持你的环境清洁,并最大水高山降落后续测试运转中资源耗尽或抵触的危险。

模块

Testcontainers 提供了一组丰盛的模块,其中封装了在测试高低文中经常使用容器的最佳通常,从而使将各种技术集成到你的测试套件中变得愈加容易。这些模块是针对特定技术(例如数据库(例如PostgreSQL、MySQL)、信息代理(例如Kafka、RabbitMQ)甚至像 Selenium 这样的用于阅读器测试的成熟运行程序环境)定制的预性能 Docker 容器。

经过经常使用这些模块,开发人员可以应用经过尝试和测试的性能,这些性能针对测试场景中的牢靠性和效率启动了提升。Testcontainers 模块目录提供了可用模块的片面列表,使你能够极速查找和成功所需的容器化服务。

以下两个最小示例展现了在Java和Go:如何经常使用Redis镜像定义 Docker 容器,性能其公开局口,并以期待容器内 Redis 运行程序就绪的形式启动容器。

在 Java 中:

GenericContainer redis  new GenericContainerwithExposedPortsredis

在 Go 中:

container err : testcontainersGenericContainerctx testcontainersGenericContainerRequest{ContainerRequest: testcontainersContainerRequest{Image: ExposedPorts: string{}WaitingFor: waitForLog}Started: }

Testcontainers Cloud

除了这些宽泛建设的开源库之外,Testcontainers 还提供了一个产品,可以将这些容器无缝地卸载到云中,而无需对 Testcontainers 代码启动任何更改:Testcontainers Cloud。经过应用 Testcontainers Cloud,您可以清楚缩小本地计算机上的负载,监禁资源以执行其余义务,同时依然运转复杂、资源密集型的测试。

这种方法可以放慢您的开发上班流,并使您的测试环境与所需的 Docker 运转时(例如,x86)具备架构等同性,由于容器是在分歧且可裁减的云环境中执行的。无论您是处置惨重的上班负载还是只想简化测试流程,Testcontainers Cloud 都提供无缝集成,既能提高性能,又能提高牢靠性,让您能更多地专一于编码,而无需治理本地资源。

总结

Testcontainers 是一款多性能且弱小的工具,它扭转了开发人员处置集成测试和本地开发的形式。经过提供一个易于经常使用的界面来启动针对特定测试需求量身定制的 Docker 容器,并且可以间接从所用编程言语的相熟性中访问,Testcontainers 消弭了与治理测试环境关系的经常出现应战。

借助封装最佳通常的模块、智能清算以坚持系统整洁以及将容器执行卸载到 Testcontainers Cloud 的才干,这种方法为在测试流程中坚持分歧性、牢靠性和效率提供了一个片面的处置打算。

无论您是宿愿简化本地上班流的开发人员,还是旨在裁减云中测试的团队,Testcontainers 都为您提供了必要的工具,以确保您的代码在不同环境中无缝运转。经过驳回 Testcontainers,您不只可以提高测试品质,还可认为更弱小、更自信的开发周期铺平路线。

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://clwxseo.com/wangluoyouhua/7302.html

猜你喜欢

热门资讯

关注我们

微信公众号