【问题标题】:How can I check for more than one constraint violation?如何检查多个约束违规?
【发布时间】:2020-03-03 21:58:58
【问题描述】:

我创建了一个验证器来验证我在模型类中定义的注释,即@NotNull@Pattern 等。在编写我的测试用例时,我创建了以下断言来查找一个违规行为。但是,在某些情况下,违规行为不止 1 次。如何修改以下内容以检查多个违规行为?我本质上想要一个像

这样的断言

result.getViolations().size(), is(1 or more)

ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
    Validator validator = validatorFactory.getValidator();

    Set<ConstraintViolation<CreateRequest>> violations = validator.validate(createRequest);

    if (violations.isEmpty()) {
        CreateResponse createResponse = restTemplate.postForObject(clientProperties.getCreateUrl(), createRequest, CreateResponse.class);
        return new ClientResult<>(createResponse);
    } else {
        return new ClientResult<>(violations);
    }

        assertThat("Number of violations", result.getViolations().size(), is(1));

【问题讨论】:

    标签: java spring-boot resttemplate junit5 hamcrest


    【解决方案1】:

    你可以把最后一行改成:

    assertThat("Number of violations", result.getViolations().size(), is(oneOf(1, 2)));
    

    请参阅docs 了解oneOf 方法。

    使用 Hamcrest 2.2 测试

    【讨论】:

    • 非常正确,但我希望确定违规次数,即 2 或 3。
    • 没有正确理解您的问题。我已经更新了我的答案。
    • 谢谢,需要查看 Hamcrest 提供的所有选项。
    猜你喜欢
    • 2014-12-09
    • 2015-09-02
    • 1970-01-01
    • 2022-09-23
    • 2020-03-28
    • 2013-11-27
    • 2015-08-30
    • 2011-04-19
    • 2015-11-01
    相关资源
    最近更新 更多