是否存在适用于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
相关产品推荐
相关产品推荐

