1.Testcontainers介绍:
Testcontainers是一个Java库,它支持JUnit测试,提供公共数据库、SeleniumWeb浏览器或任何可以在Docker容器中运行的轻量级、一次性实例。
测试容器使以下类型的测试更加容易:
数据访问层集成测试:
使用MySQL,PostgreSQL或Oracle数据库的容器化实例测试您的数据访问层代码,但无需在开发人员的计算机上进行复杂的设置,并且测试将始终从已知的数据库状态开始,避免“垃圾”数据的干扰。也可以使用任何其他可以容器化的数据库类型。
应用程序集成测试:
用于在具有相关性(例如数据库,消息队列或Web服务器)的短期测试模式下运行应用程序。
UI /验收测试:
使用与Selenium兼容的容器化Web浏览器进行自动化UI测试。每个测试都可以获取浏览器的新实例,而无需担心浏览器状态,插件版本或浏览器自动升级。您将获得每个测试会话或测试失败的视频记录。
更多:
可以签出各种贡献的模块,或使用 GenericContainer作为基础创建自己的自定义容器类。
2.Testcontainers实践示例:
Testcontainers提供了多种现成的与测试关联的应用程序容器,如下图:
在本文中,将演示集成postgresql容器和mockserver容器的测试。
Testcontainers必要条件:
1.Docker
2.支持的JVM测试框架:JUnit4,JUnit5,spock…
2.1 集成postgresql测试依赖:
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.12.5</version>
<scope>test</scope>
</dependency>
<dependency>
<group