······book = bookEJB.createBook(book);
······assertNotNull("ID не может быть пустым", book.getId());
······// Ищет все книги и убеждается, что их стало на одну больше
······assertEquals(3, bookEJB.findBooks(). size());
······// Удаляет созданную книгу
······bookEJB.deleteBook(book);
······// Ищет все книги и убеждается, что их стало на одну меньше
······assertEquals(2, bookEJB.findBooks(). size());
····}
··}
}
Метод ShouldCreateABook() является интеграционным тестом, который проверяет общее количество книг (оно должно быть равно двум, потому что класс DatabasePopulator инициализировал базу данных двумя книгами), создает новую книгу, убеждается, что общее количество книг увеличилось на единицу, удаляет одну и проверяет, стало ли общее количество книг снова равным двум. Для этого тест создает контейнер EJB, получает контекст JNDI и использует его для поиска объекта типа BookEJB (для того чтобы извлекать и создавать книги).
Компиляция, тестирование и упаковка с помощью Maven
Теперь вы можете использовать Maven для того, чтобы скомпилировать сущность Book, BookEJB, интерфейс BookEJBRemote, синглтон DatabasePopulator и класс CDI DatabaseProducer. Далее Maven упаковывает все это в один файл с расширением. jar с блоком хранения (persistence.xml), а также файл CDI beans.xml. В листинге 8.17 Maven использует файл pom.xml для описания проекта и внешних зависимостей. Этому примеру необходима зависимость glassfish-embedded-all, которая поставляется с Java EE 7 API, а также JUnit для проведения интеграционных тестов. Классы будут скомпилированы и упакованы в файл chapter08-service-1.0.jar. Следует также уведомить Maven о том, что вы будете использовать Java SE 7, сконфигурировав maven-compiler-plugin так, как это показано в листинге 8.17.
·········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">
··
··
····
····
····
··
··
··
··
··
····
······
······
······
······
····
····
······
······
······
······
····
··
··
····
······
········
········
········
········
··········
··········
········
······
······
········
········
········
··········
············
············
··············
··············
············
··········
········
······
····
··
Обратите внимание, что этот код включает в себя зависимость glassfish-embedded-all (
Для компиляции и упаковки классов откройте интерпретатор командной строки и введите следующую команду Maven:
$ mvn package
Должно появиться сообщение BUILD SUCCESSFUL, которое сообщит о том, что компиляция и упаковка прошли успешно. Кроме того, если вы заглянете в подкаталог target, то увидите, что Maven создал файл chapter08-services-1.0.jar.
Вы можете выполнить интеграционное тестирование (см. листинг 8.16) с помощью надстройки Maven Failsafe, введя следующую команду Maven:
$ mvn integration-test
Развертывание на GlassFish
Теперь, когда все классы были упакованы в архив c расширением. jar, он может быть развернут на сервере приложений GlassFish. Прежде чем сделать это, убедитесь, что GlassFish и Derby запущены и работают.