gpt4 book ai didi

java - 测试验证约束

转载 作者:行者123 更新时间:2023-11-30 07:34:33 26 4
gpt4 key购买 nike

Hibernate Validator 文档有一个简单的入门指南,其中概述了 testing validation rules .

相关的 block 是

@Test
public void manufacturerIsNull() {
Car car = new Car(null, "DD-AB-123", 4);

Set<ConstraintViolation<Car>> constraintViolations =
validator.validate(car);

assertEquals(1, constraintViolations.size());
assertEquals("may not be null", constraintViolations.iterator().next().getMessage());
}

在我看来,测试是否违反 NotNull 约束的方法相当模糊。

我的简单解决方案是这样的

public static <T> boolean  containsConstraintViolation(
Set<ConstraintViolation<T>> violations, Class<?> constraint) {

for (ConstraintViolation<?> violation : violations) {
ConstraintDescriptor<?> descriptor = violation.getConstraintDescriptor();
if (constraint.isAssignableFrom(descriptor.getAnnotation().getClass()))
return true;
}
return false;
}

这让我可以做这样的测试

assertTrue(ValidationUtils.containsConstraintViolation(violations, NotNull.class));

但是,我确信从长远来看这将是幼稚的,并且想知道是否没有其他库或 API 可以帮助我进行单元测试约束。

最佳答案

您可以查看类 org.hibernate.validator.test.util.TestUtil,它用于 Hibernate Validator 自己的测试并提供测试预期约束违规的功能(其中有assertCorrectConstraintTypes() 例如)。

请注意,此类不是 Hibernate Validator 的公共(public) API 的一部分,因此最好只使用它来获得一些想法。

比较错误消息时,请始终确保正确设置了 VM 的区域设置。更好的方法是匹配通过正确资源包加载的本地化消息(org.hibernate.validator.ValidationMessages,用于 Hibernate Validator 的标准约束)。

关于java - 测试验证约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com