gpt4 book ai didi

java - 如何使用 JUnit 测试我的@NotEmpty

转载 作者:行者123 更新时间:2023-11-29 05:02:51 40 4
gpt4 key购买 nike

我们必须删除代码中使用的几乎所有框架。我已开始使用来自 Hibernate 的 @NotEmpty。这是唯一使用的类 hibernate ,我们认为这是唾手可得的成果。

我写了下面的实现:

import        java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.FIELD;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.ReportAsSingleViolation;

@Documented
@Constraint(validatedBy = {})
@Target({ FIELD })
@Retention(RUNTIME)
@ReportAsSingleViolation
@NotNull
@Size(min = 1)
public @interface NotEmpty {
public abstract String message() default "Field has to be filled";
}

但当然也应该对其进行测试。所以我写了下面的测试:

import org.junit.Test;

class NotEmptyClass {
@NotEmpty
String notEmpty;

NotEmptyClass(String value) {
notEmpty = value;
}
}

public class NotEmptyTest {
@Test
public void firstTest() {
new NotEmptyClass(null);
}
}

我希望这个测试不会通过,但它确实通过了。很明显我是做错了什么,但我不知道是什么。 (这是第一是我真正使用注释的时候了。)我做了一些谷歌搜索,但直到现在无济于事。所以如果有人能给我指出正确的方向……

============

我写了一个更好的版本并发布在 GitHub 上:My Java annotation example

最佳答案

我认为您的测试不会失败,因为 1) 您实际上并没有验证您只是初始化它的对象,并且 2) 您没有做出任何断言

public class NotEmptyTest {
@Test
public void firstTest() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();

NotEmptyClass obj = new NotEmptyClass(null);

// Validate the object
Set<ConstraintViolation<NotEmptyClass>> constraintViolations = validator.validate(obj);

// This is the line that will cause your unit test to fail if there are not any violations
Assert.assertEquals(1, constraintViolations.size());
}
}

我建议阅读 this tutorial

关于java - 如何使用 JUnit 测试我的@NotEmpty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471665/

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