Статьи

Включить Arquillian в существующем проекте Java EE, используя Forge Addon

Технический совет № 34 объяснил, как создать тестируемое приложение Java EE 7. Это полезно, если вы запускаете новое приложение. Но что, если у вас уже есть приложение и Arquillian-включить его?

Для этого пригодится дополнение Forge и Forge-Arquillian . Вот как я добавил поддержку Arquillian в javaee7-simple-sample .

Посмотрим, что было сделано!

  1. Скачайте и установите Forge. Вы можете скачать ZIP и разархивировать в вашем любимом месте, или просто используйте следующую команду, которая сделает это за вас:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Downloads> curl http://forge.jboss.org/sh | sh
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  2725    0  2725    0     0   4641      0 --:--:-- --:--:-- --:--:--  4642
    /usr/bin/java
    Downloading Forge
    ######################################################################## 100.0%
    Archive:  /Users/arungupta/.forge/forge_installer.zip
       creating: /Users/arungupta/forge/forge-distribution-2.12.2.Final/
       creating: /Users/arungupta/forge/forge-distribution-2.12.2.Final/img/
     
    . . .
     
    If you have not yet seen the Forge built-in commands, you may either press TAB to see a list of the currently available commands, or get a more descriptive list by typing:
     
    $ command-list
     
    Then to get started - see the docs at
    http://forge.jboss.org/documentation
    Consider installing Git and Maven 3.1+ (both optional)
     
    Restart Terminal to use forge.
  2. Клонировать репозиторий simple-javaee7-sample :
    1
    git clone https://github.com/javaee-samples/javaee7-simple-sample.git
  3. Измените каталог на javaee7-simple-sample и запустите Forge:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    javaee7-simple-sample> ~/tools/forge-distribution-2.12.2.Final/bin/forge
    Using Forge at /Users/arungupta/tools/forge-distribution-2.12.2.Final
     
        _____                   
       |  ___|__  _ __ __ _  ___
       | |_ / _ \| `__/ _` |/ _ \  \\
       |  _| (_) | | | (_| |  __/  //
       |_|  \___/|_|  \__, |\___|
                       |__/     
     
    JBoss Forge, version [ 2.12.2.Final ] - JBoss, by Red Hat, Inc. [ http://forge.jboss.org ]
  4. Установите дополнение Forge-Arquillian:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    [javaee7-simple-sample]$ addon-install-from-git --url https://github.com/forge/addon-arquillian.git
    ***INFO*** Installing Addon from Git    [0/4] ...
    ***INFO*** Installing Addon from Git:Cloning repository in /var/folders/3v/syxsk5zx3yqd_8g9m206py_h0000gn/T/1416131293813-0     [0/4] ...
    ***INFO*** Installing Addon from Git:Installing project into local repository   [1/4] ...
    [INFO] Scanning for projects...
    [INFO]                                                                        
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Arquillian Forge Addon 1.0.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
     
    . . .
     
    Downloading: http://repo1.maven.org/maven2/org/jboss/forge/addon/maven-impl-projects/2.12.2.Final/maven-impl-projects-2.12.2.Final.pom
    Downloaded: http://repo1.maven.org/maven2/org/jboss/forge/addon/maven-impl-projects/2.12.2.Final/maven-impl-projects-2.12.2.Final.pom (4 KB at 16.9 KB/sec)
    ***SUCCESS*** Addon org.arquillian.forge:arquillian-addon,1.0.0-SNAPSHOT was installed successfully.
  5. Сконфигурируйте дополнение Arquillian и установите адаптер WildFly:
    1
    2
    3
    4
    5
    6
    7
    8
    [javaee7-simple-sample]$ arquillian-setup --testFramework junit --containerAdapter wildfly-remote
    Downloading: http://repo1.maven.org/maven2/org/wildfly/wildfly-arquillian-container-remote/maven-metadata.xml
    Downloaded: http://repo1.maven.org/maven2/org/wildfly/wildfly-arquillian-container-remote/maven-metadata.xml (702 B at 4.2 KB/sec)
    ***SUCCESS*** Arquillian setup complete
    ***SUCCESS*** Installed Arquillian 1.1.5.Final
    ***SUCCESS*** Installed junit
    ***SUCCESS*** Installed Arquillian Container WildFly Remote 8.x
    ***SUCCESS*** Installed Arquillian Container WildFly Remote 8.x dependencies

    Список адаптеров разнообразен, как показано:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    glassfish-embedded-3.1       jetty-embedded-6.1           tomee-remote                
    glassfish-managed-3.1        jetty-embedded-7             was-embedded-8              
    glassfish-remote-3.1         openejb-embedded-3.1         was-remote-7                
    jbossas-embedded-6           openejb-embedded-4           was-remote-8                
    jbossas-managed-4.2          openshift-express            weld-ee-embedded-1.1        
    jbossas-managed-5.1          openwebbeans-embedded-1      weld-se-embedded-1          
    jbossas-managed-6            tomcat-embedded-6            weld-se-embedded-1.1        
    jbossas-managed-7            tomcat-embedded-7            wildfly-managed             
    jbossas-remote-4.2           tomcat-managed-5.5           wildfly-remote              
    jbossas-remote-5             tomcat-managed-6             wls-remote-10.3             
    jbossas-remote-5.1           tomcat-managed-7            
    jbossas-remote-6             tomcat-remote-6

    Это позволяет вам настроить контейнер по вашему выбору. Это добавит следующий профиль в ваш «pom.xml»:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <profile>
        <id>arquillian-wildfly-remote</id>
        <build>
            <plugins>
                <plugin>
                    <artifactid>maven-surefire-plugin</artifactid>
                    <version>2.14.1</version>
                    <configuration>
                        <systempropertyvariables>
                            <arquillian.launch>arquillian-wildfly-remote</arquillian.launch>
                        </systempropertyvariables>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
                <groupid>org.wildfly</groupid>
                <artifactid>wildfly-arquillian-container-remote</artifactid>
                <version>8.1.0.Final</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>

    Профиль включает зависимость «wildfly-arquillian-container-remote», которая позволяет Arquillian подключаться к WildFly, работающему в удаленном «режиме». Хост по умолчанию — «localhost», а порт — «8080». «Maven-surefire-plugin» передается свойству конфигурации «arquillian.launch» со значением «arquillian-wildfly-remote». Это соответствует квалификатору «container» в сгенерированном «arquillian.xml». «Arquillian.xml» используется для определения параметров конфигурации для определения местоположения или связи с контейнером. В нашем случае WildFly работает на хосте и порте по умолчанию, поэтому нет необходимости обновлять этот файл. Важно отметить, что квалификатор «container» совпадает со значением квалификатора «arquillian.launch».

    1
    2
    3
    4
    <!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
        <container qualifier="arquillian-wildfly-remote">
    </container></arquillian>

    Этот файл. Более подробная информация об этом файле конфигурации доступна здесь .

  6. Пока не исправлен FORGE-2148 , вам также необходимо добавить реализацию JAX-RS, а также соответствующего поставщика JAXB. Этот тест использует RESTEasy, поэтому необходимо добавить следующее:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    <dependency>
        <groupid>org.jboss.resteasy</groupid>
        <artifactid>resteasy-client</artifactid>
        <version>3.0.5.Final</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupid>org.jboss.resteasy</groupid>
        <artifactid>resteasy-jaxb-provider</artifactid>
        <version>3.0.5.Final</version>
        <scope>test</scope>
    </dependency>

    Это можно добавить либо в профиль, либо в зависимости от проекта.

И теперь вы готовы к тестированию!

Скачайте WildFly 8.1 и разархивируйте. Запустите сервер как:

1
./bin/standalone.sh

Запустите тесты:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
javaee7-simple-sample> mvn test
[INFO] Scanning for projects...
[INFO]                                                                        
[INFO] ------------------------------------------------------------------------
[INFO] Building helloworld 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ helloworld ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.14.1:test (default-test) @ helloworld ---
[INFO] Surefire report directory: /Users/arungupta/workspaces/javaee7-simple-sample/target/surefire-reports
 
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.javaee7.sample.PersonTest
Nov 16, 2014 1:53:57 PM org.xnio.Xnio
INFO: XNIO version 3.2.0.Beta4
Nov 16, 2014 1:53:57 PM org.xnio.nio.NioXnio
INFO: XNIO NIO Implementation Version 3.2.0.Beta4
Nov 16, 2014 1:53:57 PM org.jboss.remoting3.EndpointImpl
INFO: JBoss Remoting version (unknown)
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.963 sec
 
Results :
 
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.403 s
[INFO] Finished at: 2014-11-16T13:53:59+02:00
[INFO] Final Memory: 17M/309M
[INFO] ------------------------------------------------------------------------

И теперь вы уже включили Arquillian в свой существующий проект!

Подайте любые проблемы здесь .

Наслаждайтесь!