如何解决Serenity Cucumber项目运行抛出的SerenityManagedException错误
问题根因
该报错是RestAssured与Serenity Rest版本不兼容导致的NoSuchMethodError运行时异常:
Serenity Rest内部日志上报逻辑调用了RestAssured的
blacklistedHeaders()方法,该方法是RestAssured 4.3.0及以上版本才新增的API,如果你项目中引入的RestAssured版本低于4.3.0,仅存在旧版的getBlacklistedHeaders()方法,就会触发方法不存在的错误。
排查步骤
- 执行依赖查询命令获取当前项目的依赖版本:Maven项目执行
mvn dependency:tree,Gradle项目执行gradle dependencies - 核对Serenity与RestAssured的版本匹配规则:
- Serenity 3.x及以上版本必须搭配RestAssured ≥4.3.0版本使用
- Serenity 2.4.x及以下版本适配RestAssured 3.x系列版本
- 排查是否存在依赖冲突:确认是否有多个依赖引入了不同版本的RestAssured,出现高版本被低版本覆盖的情况
解决方案
根据项目的Serenity版本选择对应处理方案即可:
- 适配高版本Serenity(3.x+)
统一RestAssured版本到4.3.3及以上,Maven依赖配置参考:
<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>5.3.0</version> <scope>test</scope> </dependency>
如果是Gradle项目在依赖配置里声明对应版本的RestAssured即可。
2. 保留低版本RestAssured
将Serenity版本降级到2.4.51,适配RestAssured 3.x系列版本。
3. 临时验证方案(仅用于快速确认问题,不建议长期使用)
关闭Serenity的接口请求日志上报功能,在项目的serenity.properties配置文件中添加如下配置:
serenity.rest.log = false
该配置会跳过触发报错的日志上报逻辑,不会影响接口请求执行,但测试报告中会缺失接口请求、响应的详情记录。
内容的提问来源于stack exchange,提问作者tayswift13
相关产品推荐
相关产品推荐

