Выбрать главу
Листинг 2.53. Файл pom.xml для компиляции, запуска и тестирования

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" 

·········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">

··<modelVersion>4.0.0</modelVersion>

··<parent>

····<groupId>org.agoncal.book.javaee7</groupId>

····<artifactId>chapter02</artifactId>

····<version>1.0</version>

··</parent>

··<groupId>org.agoncal.book.javaee7.chapter02</groupId>

··<artifactId>chapter02-putting-together</artifactId>

··<version>1.0</version>

··<dependencies>

····<dependency>

······<groupId>org.jboss.weld.se</groupId>

······<artifactId>weld-se</artifactId>

······<version>2.0.0</version>

····</dependency>

····<dependency>

······<groupId>junit</groupId>

······<artifactId>junit</artifactId>

······<version>4.11</version>

······<scope>test</scope>

····</dependency>

··</dependencies>

··<build>

····<plugins>

······<plugin>

········<groupId>org.apache.maven.plugins</groupId>

········<artifactId>maven-compiler-plugin</artifactId>

········<version>2.5.1</version>

········<configuration>

··········<source>1.7</source>

··········<target>1.7</target>

········</configuration>

······</plugin>

······<plugin>

········<groupId>org.codehaus.mojo</groupId>

········<artifactId>exec-maven-plugin</artifactId>

········<version>1.2.1</version>

········<executions>

··········<execution>

············<goals>

··············<goal>java</goal>

············</goals>

············<configuration>

··············<mainClass>org.agoncal.book.javaee7.chapter02.Main</mainClass>

············</configuration>

··········</execution>

········</executions>

······</plugin>

······<plugin>

········<groupId>org.apache.maven.plugins</groupId>

········<artifactId>maven-failsafe-plugin</artifactId>

········<version>2.12.4</version>

········<executions>

··········<execution>

············<id>integration-test</id>

············<goals>

··············<goal>integration-test</goal>

··············<goal>verify</goal>

············</goals>

··········</execution>

········</executions>

······</plugin>

····</plugins>

··</build>

</project>

Для компиляции классов откройте командную строку в корневом каталоге, содержащем файл 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).

Листинг 2.54. Интеграционный тест BookServiceIT

public class BookServiceIT {

··@Test

··public void shouldCheckNumberIsMOCK () {

····Weld weld = new Weld();

····WeldContainer container = weld.initialize();

····BookService bookService =