歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Arquillian 使用指南

Arquillian 使用指南

日期:2017/2/28 14:45:10   编辑:Linux教程

本教程讓你熟悉使用 JBoss Forge 的 Arquillian 插件。 閱讀本教程後,你能夠掌握:

  • 安裝 Arquillian 插件到 Forge 環境中
  • 使用這個插件添加 Arquillian 基礎設施到一個基於 Maven 的Java 項目中
  • 生成組件和相應的 Arquillian 測試
  • 無需手動修改在不同容器中運行 Arquillian 測試

你將完成很多與 快速入門教程 描述中相同的步驟, 不同是這裡把一些瑣碎的事留給 Forge 來處理。本教程定於快速閱讀,就是讓你能夠更快的入門。

預備知識

本教程假定你已經安裝好了 JBoss Forge . 安裝 Forge 並不麻煩,請參考 “快速入門教程” 或者 官方的 Forge 文檔 ,下載和安裝。你的機器上還需要安裝 JDK 1.6 或更高版本。

創建項目

在使用 Arquillian之前,我們要先創建一個項目。如果你還沒創建,請使用下面的 Forge 命令來創建一個簡單的 Java EE 6 項目,包含 JPA 支持。

$ new-project --named arquillian-demo --topLevelPackage demo
? Use [/Users/paul/arquillian-demo] as project directory? [Y/n]
***SUCCESS*** Created project [arquillian-demo] in new working directory [/Users/paul/arquillian-demo]
Wrote /Users/paul/arquillian-demo
Wrote /Users/paul/arquillian-demo/pom.xml
Wrote /Users/paul/arquillian-demo/src/main/java
Wrote /Users/paul/arquillian-demo/src/test/java
Wrote /Users/paul/arquillian-demo/src/main/resources
Wrote /Users/paul/arquillian-demo/src/test/resources
Wrote /Users/paul/arquillian-demo/src/main/resources/META-INF/forge.xml

新項目已經創建,下一步,我們需要添加一些代碼用於測試。下面使用 Forge 來創建一個 CDI Bean。

首先,我們使用 “beans” 插件來安裝 CDI 到項目中。

$ beans setup
***SUCCESS*** Installed [forge.spec.cdi] successfully.
 ? Do you want to install CDI APIs? [y/N]

Wrote /Users/paul/arquillian-demo/src/main/resources/META-INF/beans.xml

然後創新建一個 Bean。

$ beans new-bean --type demo.MySimpleBean --scoped DEPENDENT
Picked up type <JavaResource>: demo.MySimpleBean
Wrote /Users/paul/arquillian-demo/src/main/java/demo/MySimpleBean.java

項目已經准備就緒,下面進行測試。

入門

設置 Arquillian 簡單,你可能已經 快速入門教程 中讀過。在 pom.xml 中配置一個新的 Arquillian 容器需要大量復制和粘貼工作。Forge 可以用一個命令來完成這些工作。

首先你需要安裝 Arquillian 插件。

$ forge install-plugin arquillian

現在我們需要設置好 Arquillian 和容器配置。這裡使用 JBoss AS7。

$ arquillian setup --container JBOSS_AS_7_MANAGED

Forge 會提示你要使用的 JUnit, Arquillian 和 JBoss AS7 版本。選擇使用最新版本。如果你還沒下載 JBoss AS7,Forge 甚至也可以幫你自動完成。

就這樣,Arquillian 配置完畢。你可以自行查看一下 pom.xml 文件中生成的 dependenices 和 profile,Forge 還在 src/test/resources 創建了一個 arquillian.xml 文件。

編寫測試

現在開始寫一個測試。再次使用 Forge 幫你完成。

$ arquillian create-test --class demo.MySimpleBean.java
Picked up type <JavaResource>: demo.MySimpleBeanTest
Wrote /Users/paul/arquillian-demo/src/test/java/demo/MySimpleBeanTest.java

一個包含部署和測試方法的新測試類會添加到項目中。它使用 CDI 注入了要測試的類,這樣能夠立即驗證測試是否能夠在容器中運行。如果你的 IDE 不能找到 imports,請確認前面創建的 Maven profile 是否已經啟用。你可以從 IDE,或者 Maven 命令行,或者 Forge 中直接運行測試。

$ build --profile arq-jbossas-7-managed

恭喜你! 你已經使用 Arquillian 和 Forge 得到第一個 (greenbar) 綠條 !

下面嘗試測試 JPA 代碼。

測試 JPA

在開始寫使用 Java Persistence API (JPA) 的測試之前,需要先配置 JPA。我們將會創建一個 Entity,然後寫一個簡單的 Data Access Object,這就是我們將要進行測試的類。

$ persistence setup --provider HIBERNATE --container JBOSS_AS7
***SUCCESS*** Installed [forge.spec.jpa] successfully.
***INFO*** Setting transaction-type="JTA"
***INFO*** Using example data source [java:jboss/datasources/ExampleDS]
Warning:  The encoding 'UTF-8' is not supported by the Java runtime.
 ? The JPA provider [HIBERNATE], also supplies extended APIs. Install these as well? [y/N]  [false] 
Wrote /Users/paul/arquillian-demo/pom.xml
Wrote /Users/paul/arquillian-demo/src/main/resources/META-INF/persistence.xml

現在開始創建 Entity。

$ entity --named Language --package demo.entities
Created @Entity [demo.entities.Language]
Picked up type <JavaResource>: demo.entities.Language
Wrote /Users/paul/arquillian-demo/src/main/java/demo/entities/Language.java

然後向這個 Entity 中添加一些屬性。

$ field string --named name
Added field to demo.entities.Language: @Column private String name;
Wrote /Users/paul/arquillian-demo/src/main/java/demo/entities/Language.java

你必須復制下面這個文件到你的項目中。

src/main/java/demo/dao/LanguageDao.java
package demo.dao;

import demo.entities.Language;
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;

@Singleton
@Startup
public class LanguageDao {
    @PersistenceContext
    EntityManager em;

    public List<Language> listLanguages() {
        return em.createQuery("select l from Language l").getResultList();
    }

    @PostConstruct
    public void insertTestData() {
        Language java = new Language();
        java.setName("Java");
        em.persist(java);

        Language ruby = new Language();
        ruby.setName("Ruby");
        em.persist(ruby);

        Language groovy = new Language();
        groovy.setName("Groovy");
        em.persist(groovy);
    }
}

現在開始創建我們的測試類,如果你已經完成了教程的上半部分,這個命令也類似。

$ arquillian create-test --class demo.dao.LanguageDao.java --enableJPA
Picked up type <JavaResource>: demo.dao.LanguageDemoTest
Wrote /Users/paul/arquillian-demo/src/test/java/demo/dao/LanguageDemoTest.java

這個命令會創建一個測試類,並添加 persistence.xml 到測試的部署中。在 IDE 中打開這個測試類,添加 Language 到部署中。

現在添加一個測試斷言:

src/test/java/demo/dao/LanguageDaoTest.java
@Test
public void testListLanguages() {
	Assert.assertEquals(3, languagedao.listLanguages().size());
}

恭喜你! 另一個 Arquillian (greenbar) 綠條 !

添加其它容器

添加其它容器很簡單,只需再次運行 setup 命令。例如,添加 Glassfish。

$ arquillian setup --container GLASSFISH_3_1_REMOTE

在容器之間切換只需要切換 Maven profile。例如在 Forge中:

$ build test --profile glassfish-remote-3

導出部署包

為了調試,將測試導出到一個部署文件非常有用。Forge 可以幫你完成。

首先轉到一個 Arquillian 測試:

$ cd src/test/java/demo/MySimpleBeanTest.java

然後導出部署文件:

$ arquillian export

你可以在項目中 target 目錄中找到這個部署文件。

Arquillian 的詳細介紹:請點這裡
Arquillian 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved