You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Serenity框架执行Rest请求时遇FieldsRecordingFilter运行时错误求助

解决Serenity Rest运行时错误:Some exception during recording fields

我在Serenity框架中运行以下Rest请求代码时,遇到了一个运行时异常:

Response authenticationResponse = SerenityRest.given()
    .relaxedHTTPSValidation()
    .header("Cookie", **Validvalue**)
    .queryParam("response_type", "code")
    .queryParam("state", "nothing")
    .queryParam("client_id", **Validvalue**)
    .queryParam("scope", "openid")
    .queryParam("redirect_uri", "http%3A%2F%2Flocalhost%3A4200%2Flogin%2Fsuccess")
    .get("https://account.tst.com/auth");

抛出的错误信息如下:

Some exception during recording fields java.lang.RuntimeException: Some exception during recording fields at net.serenitybdd.rest.filters.FieldsRecordingFilter.filter(FieldsRecordingFilter.java:52) at io.restassured.filter.Filter$filter.call(Unknown Source)

结合经验,给你几个可行的解决方案:

1. 直接禁用FieldsRecordingFilter

这个异常的根源是Serenity内置的字段记录过滤器在处理请求时出了问题。最简单的解决办法就是直接禁用这个过滤器:
在你的Serenity配置文件(serenity.properties或serenity.conf)中添加以下配置:

serenity.rest.filter.fields.recording.enabled=false

添加后重启测试,应该就能绕过这个异常了。

2. 检查依赖版本兼容性

这类问题很多时候是Serenity和RestAssured的版本不匹配导致的。确保你的项目中serenity-core和serenity-rest-assured的版本完全一致,并且是官方推荐的稳定版本。比如在Maven的pom.xml里统一版本号:

<dependency>
    <groupId>net.serenity-bdd</groupId>
    <artifactId>serenity-core</artifactId>
    <version>3.9.2</version> <!-- 替换为最新稳定版本 -->
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>net.serenity-bdd</groupId>
    <artifactId>serenity-rest-assured</artifactId>
    <version>3.9.2</version> <!-- 和core版本保持一致 -->
    <scope>test</scope>
</dependency>

3. 简化请求定位问题

先把请求简化,逐步排查是哪个参数或配置触发了异常。比如暂时移除Cookie头或者relaxedHTTPSValidation(),看看请求能否正常运行:

Response authenticationResponse = SerenityRest.given()
    .queryParam("response_type", "code")
    .queryParam("state", "nothing")
    .queryParam("client_id", **Validvalue**)
    .queryParam("scope", "openid")
    .queryParam("redirect_uri", "http%3A%2F%2Flocalhost%3A4200%2Flogin%2Fsuccess")
    .get("https://account.tst.com/auth");

如果简化后请求正常,再逐个加回参数。比如发现是Cookie导致的问题,那可以考虑手动调整Cookie格式,或者结合第一个方案禁用过滤器。

4. 升级到最新Serenity版本

这个FieldsRecordingFilter的异常可能是框架的已知bug,后续版本已经修复。建议你升级到Serenity BDD的最新稳定版本,查看官方更新日志确认是否有相关修复记录。

内容的提问来源于stack exchange,提问作者sridhar sekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:42:54