还有这种操作?利用Docker和Junit进行集成测试

目录

1.前言

2.配置步骤

2.1 前提条件

2.2 Step 1: 配置build.gradle

2.4 Step 3: 执行前配置


1.前言

“集成测试的目的是验证各组件之间的通信路径与交互以检测接口上的缺陷”

——敏捷开发创始人Martin Fowler

       在软件开发中,集成测试是一个关键的环节,它用于验证不同组件或模块之间的交互是否正常。为了更好地进行集成测试,我们可以利用Docker和Junit这两个工具来创建一个可靠且可重复的测试环境,并编写测试用例进行测试。

       本文将分享一种利用Docker Compose和JUnit的方法来搭建微服务的集成测试环境。我们利用Docker Compose启动依赖项,JUnit和Gradle来执行测试,以及docker-compose-rule将他们粘在一起。

2.配置步骤
2.1 前提条件

       你的测试机需要预安装Docker和Docker Compose,没了,就这么简单。 
Docker:https://www.docker.com/docker-centos-distribution 
Docker Compose: https://docs.docker.com/compose/install/

2.2 Step 1: 配置build.gradle

       配置环境的第一步是配置build.gradle,在测试时我们使用docker-compose-rule来协调系统与Docker Compose的交互。为此我们需要将它们的bintray repository添加至我们的’repositories’配置中,并在’com.palantir.docker.compose:docker-compose-rule-junit4:0.31.1’上定义一个testCompile依赖关系。

       另外,还需要将单元测试与集成测试分开,以便可以独立运行Gradle任务测试和集成测试。因此我们可以创建一个称为integration Test的测试任务来完成此任务,其中我们将包括一个category(稍后会介绍)。

配好的build.gradle大致为: 

2.3 Step 2: 配置docker-compose文件

       第二步是为与系统需要进行交互的外部组件配置docker-compose文件。在本文中,我们使用docker 镜像persperhour / dynamodb。

完整的配置如下: 

这里有个坑,要确保不要暴露任何端口,避免发生冲突。

        为了使docker-compose-dynamodb.yml可用于我们的测试,需要将这个文件放入src/test/resources文件夹中。然后,通过使用docker-compose -f docker-compose-dynamodb.yml启动容器来测试我们的配置,最后用docker-compose -f docker-compose-dynamodb-yml将其卸下。

2.4 Step 3: 执行前配置

       现在开始可以配置我们需要的测试了,首先,测试之前需要创建上文提到的category接口。

  然后,我们可以使用这个类对集成测试进行注释:

 接下来配置docker-compose-rule,使用@ClassRule:

      此配置可保证在docker-compose文件中指定的服务会在测试之前启动,在测试完成停止并拆除。

       现在,我们可以在@BeforeClass中使用DockerComposeRule docker来获取从Docker分配的外部端口来配置DynamoDB连接:

      到此为止,所有配置已经完成了,你可以按照测试需求部署服务与业务逻辑了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值