Мы должны удалить почти все фреймворки, используемые в коде. Я начал с @NotEmpty из Hibernate. Это был единственный класс, который использовался от Hibernate, так что мы видели низко висящие фрукты.Как протестировать мой @NotEmpty с помощью JUnit
я написал следующую реализацию:
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);
}
}
Я бы ожидал, что этот тест не пройдет, но он это сделает. Так ясно, что я что-то не так, но я понятия не имею, что. (Это первое раз, когда я действительно работаю с аннотациями.) Я сделал несколько Googling, но до теперь безрезультатно. Так что если кто-то может мне точку в правильном направлении ...
============
я написал лучшую версию и опубликовал его на GitHub: My Java annotation example
Об утверждении «ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Я получаю javax.validation.ValidationException: Не удалось создать конфигурацию. в javax.validation.Validation $ GenericBootstrapImpl.configure (Validation.java:175) в javax.validation.Validation.buildDefaultValidatorFactory (Validation.java:50) –
Я читаю учебник. Спасибо за ссылку. –
Я делаю что-то вроде вас, но я хотел бы сделать это еще немного лучше. Я проверяю, что существует только одна ConstraintViolation, но есть ли способ проверить, что это правильная ConstraintViolation? –