··············
············
··········
········
······
······
········
········
········
········
··········
············
············
··············
··············
············
··········
········
······
····
··
Для компиляции классов откройте командную строку в корневом каталоге, содержащем файл pom.xml, и введите следующую команду Maven:
$ mvn compile
Запуск класса Main
Благодаря exec-maven-plugin, сконфигурированному в файле pom.xml в листинге 2.53, теперь мы можем запустить класс Main, определенный в листинге 2.51. Откройте командную строку в корневом каталоге, содержащем файл pom.xml, и введите следующую команду Maven:
$ mvn exec: java
После этого начнется выполнение класса Main, который использует BookService для создания Book. Благодаря внедрению Logger будет отображать следующие выходные данные:
Info: Сгенерирован ISBN: 13-84356-18643 41788
Book{title='H2G2', price=12.5, description='Интересная книга на тему высоких технологий', isbn='13-84356-18643 41788'}
Написание класса BookServiceIT
Листинг 2.54 показывает, как класс BookServiceIT тестирует компонент BookService. Он использует тот же API, специфичный для Weld, для начальной загрузки CDI в качестве класса Main, показанного в листинге 2.51. Как только вызывается BookService.createBook, интеграционный тест проверяет, чтобы сгенерированный номер начинался с "MOCK". Это происходит потому, что интеграционный тест использует альтернативу MockGenerator (вместо IsbnGenerator).
public class BookServiceIT {
··@Test
··public void shouldCheckNumberIsMOCK () {
····Weld weld = new Weld();
····WeldContainer container = weld.initialize();
····BookService bookService =
container.instance(). select(BookService.class). get();
····Book book = bookService.createBook("H2G2", 12.5f, "Интересная книга
········································на тему высоких технологий");
····assertTrue(book.getNumber(). startsWith("MOCK"));
····weld.shutdown();
··}
}
Активизация альтернатив и перехватчиков в файлах beans.xml для интеграционного тестирования
Интеграционный тест BookServiceIT в листинге 2.54 требует, чтобы был активизирован MockGenerator. Для этого необходимо выделить отдельный файл beans.xml для тестирования (листинг 2.55) и активизации альтернатив (с тегом
·······xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
·······xsi: schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
·······http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
·······version="1.1" bean-discovery-mode="all">
··
····
··
··
····
··
Запуск интеграционного теста
Для выполнения интеграционного теста с помощью плагина Maven Failsafe (определенного в pom.xml в листинге 2.53) введите следующую команду Maven:
$ mvn integration-test
Класс BookServiceIT должен выполнить один успешный интеграционный тест. Вы также увидите несколько протоколов или регистраций входа в метод и выхода из него.
Резюме