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

是否存在适用于Faktor-IPS MessageList的Hamcrest Matcher?

Faktor-IPS MessageList 适配Hamcrest Matcher说明

Faktor-IPS 官方已提供适配org.faktorips.runtime.MessageList的Hamcrest Matcher集合,无需自行实现基础匹配逻辑。

基础使用前提

你需要引入Faktor-IPS的测试工具依赖faktor-ips-test,其中org.faktorips.testsupport.matchers.MessageListMatchers类下封装了所有常用的MessageList匹配器,用法和普通集合的Hamcrest Matcher完全一致。

常用匹配器列表

  • hasSize(int expected):匹配MessageList中的消息总条数,和Java集合的hasSize使用逻辑完全相同
  • isEmpty():匹配MessageList为空(没有任何消息),等价于hasSize(0)
  • hasMessageWithCode(String expectedErrorCode):匹配MessageList中包含指定错误码的消息
  • hasMessageOfSeverity(Severity expectedSeverity):匹配MessageList中包含指定严重级别的消息,支持的级别包括ERROR、WARNING、INFO等Faktor-IPS内置枚举值
  • hasMessage(Matcher<Message> subMatcher):支持嵌套Message维度的匹配器,可实现更灵活的自定义校验规则

示例代码

import static org.faktorips.testsupport.matchers.MessageListMatchers.hasSize;
import static org.faktorips.testsupport.matchers.MessageListMatchers.hasMessageWithCode;
import static org.hamcrest.MatcherAssert.assertThat;

// 测试逻辑
MessageList result = businessService.validatePolicy(policyInstance);
// 断言校验返回的消息列表有3条消息
assertThat(result, hasSize(3));
// 断言消息列表包含错误码为"policy-cover-invalid"的消息
assertThat(result, hasMessageWithCode("policy-cover-invalid"));

如果现有匹配器无法满足特殊校验需求,你也可以通过继承org.hamcrest.TypeSafeMatcher<MessageList>自定义匹配规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:06:01