gpt4 book ai didi

java - 如何测试验证注释?

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:35 24 4
gpt4 key购买 nike

如何测试基于注释的验证?我知道它只适用于知道如何识别注释的东西,并且默认情况下测试框架(JUnit、TestNG)似乎无法识别这些。

public class Foo {

@NotNull
@Size(min = 2, max = 110)
private String description;

public method describe ( String desc ) {
this.description = desc;
}
}

更新:例如,如果我执行 Foo.new.describe( ' ' )Foo.new.describe( null ) ,我将如何确保当我尝试设置描述时,它会抛出错误(如果由识别注释的事物使用)。

最佳答案

你的问题有点令人困惑。我将尝试回答该问题的两个不同方面。

How can I test validation annotations?

如果这些验证注释符合 Java JSR-303 Bean Validation (似乎是这种情况),您可以验证这些对象并使用 Hibernate Validator 在单元测试上做出所需的断言或其他实现。

示例:

public class FooTest {

private static Validator validator;

@BeforeClass
public static void setUp() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}

@Test
public void checkIfIsNull() {
Foo foo = new Foo(); // Field is null at this point

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

assertTrue(constraintViolations.size() > 0);
}
}

--

For example how would I go about ensuring that when I attempt to set the description, that it will throw an error (if used by things that recognize the annotations) if I do Foo.new.describe(' ') or Foo.new.describe(null)

您在这里讨论的是运行时验证,而不是单元测试。您可以这样检查并抛出推荐的异常:

public void describe(String desc) {
if (desc == null || desc.trim().isEmpty())
throw new IllegalArgumentException("[desc] parameter is null or empty");

...
}

PS:这里我假设 describe(String) 方法实际上不是 setDescription(String)

关于java - 如何测试验证注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117324/

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