java static block与runtimehook实现的Wiremock服务器的自动开启与关闭

本文介绍了如何利用Java的static块和runtime hook在BDD自动化测试中实现Wiremock服务器的自动开启与关闭。通过在静态初始化块启动服务器,并注册关闭服务器的钩子到JVM的shutdownHook,确保测试执行前后服务器的正确管理,解决了多测试类执行时的端口冲突问题。Wiremock是一个便捷的API模拟服务器,适用于功能测试。
摘要由CSDN通过智能技术生成

去年的一个项目中,BDD自动化测试(基于cucumber)部分,由于某些依赖到的API没有稳定的STG环境,我们需要启wiremock服务器来模拟依赖到的API。

需求:

1, 在测试程序执行之前启动wiremock服务器。

2, 在测试程序执行之后自动关闭wiremock服务器(如果不关闭,由于端口冲突,下次测试时wiremock服务器启动会失败)。

背景:

按照BDD的规范,按照功能划分,项目的自动化测试scenarios分布在多个功能feature文件中。因此测试代码分布在多个test类中。


这个需求貌似简单,在测试类的@before标签中开启wiremock服务器,@after标签中关闭服务器就好了。

但是,,如果一次自动化测试中需要执行多个测试Test类的话,这样就有问题

1, 如果A_Test.java关闭服务器不及时会导致B_Test.java启动服务器失败。

2, 如果加入延时或者同步机制的话导致代码复杂度变高,测试时间变长。

我的解决方案:

写一个如下WiremockClient类, 在每个Test类中使用该类。

public class WireMockClient {
        private static WireMockServer server;
        static {
                server = new WireMockServer(options().port(18088));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值