··@BeforeClass
··public static void init() {
····vf = Validation.buildDefaultValidatorFactory();
····validator = vf.getValidator();
··}
··@AfterClass
··public static void close() {
····vf.close();
··}
··@Test
··public void shouldRaiseNoConstraintViolation() {
····Customer customer = new Customer("John", "Smith", "jsmith@gmail.com");
····Set
····assertEquals(0, violations.size());
··}
··@Test
··public void shouldRaiseConstraintViolationCauseInvalidEmail() {
····Customer customer = new Customer("Джон", "Смит", "DummyEmail");
····Set
····assertEquals(1, violations.size());
····assertEquals("invalid email address", violations.iterator(). next(). getMessage());
····assertEquals("dummy", violations.iterator(). next(). getInvalidValue());
····assertEquals("{org.agoncal.book.javaee7.chapter03.Email.message}",
·················violations.iterator(). next(). getMessageTemplate());
··}
}
Листинг 3.29 построен по такому же принципу (Validator создается с помощью фабрики, происходит валидация компонента, фабрика закрывается), но проверяет компонент Address.
public class AddressIT {
··@Test
··public void shouldRaiseConstraintViolationCauseInvalidZipCode() {
····ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
····Validator validator = vf.getValidator();
····Address address = new Address("233 Стрит", "Нью-Йорк", "NY",
"DummyZip", "США");
····Set
validator.validate(address);
····assertEquals(1, violations.size());
····vf.close();
··}
}
Компиляция и тестирование в Maven
Прежде чем протестировать все классы, их необходимо скомпилировать. Файл pom.xml в листинге 3.20 объявляет все зависимости, требуемые для компиляции кода: Hibernate Validator (справочная реализация Bean Validation) и Weld (для CDI). Обратите внимание: в pom.xml также объявляется плагин Failsafe, предназначенный для запуска интеграционных тестов (применяется одновременно с обоими классами — CustomerIT и AddressIT).
·········xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
·········xsi: schemaLocation="http://maven.apache.org/POM/4.0.0
·········http://maven.apache.org/xsd/maven-4.0.0.xsd">
··
··
····
····
····
··
··
··
··
··
····
······
······
······
····
····
······
······
······
····
····
······
······
······
······
····
··
··
····
······
········
········
········
··········
··········
········
······
······
········
········
········
··········
············
············