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

如何验证WebApplicationException子类的HTTP状态码?附409冲突测试场景

验证WebApplicationException的409 Conflict响应码

当然可以实现更全面的测试啦!你当前的测试只验证了抛出的异常类型,确实没覆盖状态码的校验,咱们可以通过两种常见方式来完善:

方式一:捕获异常后直接校验状态码

assertThrows方法其实会返回被捕获的异常实例,我们可以拿到这个实例后,对它的响应状态码做断言:

// 捕获抛出的WebApplicationException
WebApplicationException thrownException = assertThrows(WebApplicationException.class, () -> controller.createObject());
// 校验响应状态码是否为409 Conflict
assertEquals(Response.Status.CONFLICT.getStatusCode(), thrownException.getResponse().getStatus());

这种方式简单直接,不用额外引入依赖,适合大多数基础测试场景。

方式二:用AssertJ写出更流畅的断言

如果你的项目里已经引入了AssertJ断言库,还可以写出可读性更强的链式断言代码:

assertThatThrownBy(() -> controller.createObject())
        .isInstanceOf(WebApplicationException.class)
        .satisfies(exception -> {
            WebApplicationException webEx = (WebApplicationException) exception;
            assertThat(webEx.getResponse().getStatus()).isEqualTo(Response.Status.CONFLICT.getStatusCode());
        });

小提示:尽量用Response.Status.CONFLICT.getStatusCode()来获取状态码,而不是直接写硬编码的409,这样代码的可维护性更好,后续如果枚举有变更也能自动同步~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:22:41