主项目与Maven依赖库中RestAssured.port静态值作用规则咨询
结论
RestAssured.port 是类级别的静态字段,主项目中原本设置的1111会被库项目的赋值操作直接覆盖为2222,两个项目不会各自持有独立的端口值。
核心原因
- Maven的模块拆分、依赖引入只是编译期的代码组织方式,项目运行时主项目和所有引入的依赖类都会被加载到同一个JVM进程中。
- Java中静态字段归属于类本身,而非某个类实例、某个Maven模块。全限定名为
io.restassured.RestAssured的类在同一个JVM中只会被加载一次,对应的port静态字段在内存中全局只有唯一一份存储,不管是主项目还是库项目的代码修改这个值,操作的都是同一个内存地址,后执行的赋值会覆盖之前的设置。
避坑建议
直接修改RestAssured全局静态字段的写法,在多模块、多测试场景下非常容易出现配置串扰:比如库项目逻辑执行完把端口改成2222后,主项目后续发起的请求会被错误路由到2222端口,引发非预期的报错。
如果需要给不同服务端设置独立端口,不要修改全局静态配置,改用实例级别的配置方式即可:
- 为不同服务构造独立的
RequestSpecification请求实例,单独给实例绑定端口,示例代码:
// 主项目专属请求实例,绑定端口1111 RequestSpecification mainServiceRequest = RestAssured.given().port(1111); // 库项目专属请求实例,绑定端口2222 RequestSpecification libServiceRequest = RestAssured.given().port(2222);
- 后续发请求时统一使用对应专属的请求实例,就不会出现配置互相覆盖的问题。
内容的提问来源于stack exchange,提问作者Dariusz Gwóźdź
相关产品推荐
相关产品推荐

